JavaScript中DOM,以及如何获取元素

Posted 别Null.了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中DOM,以及如何获取元素相关的知识,希望对你有一定的参考价值。

目录

DOM

什么是DOM

 DOM树

DOM中的节点

获取元素

根据id获取元素

根据标签获取元素

根据name获取元素

根据class获取元素

根据选择器获取元素


DOM

什么是DOM

DOM:文档对象模型,是W3C组织推荐的处理可扩展标记语言(html或者XML)的标准编程接口。

 DOM树

DOM中将HTML文档视为树结构,被称之为文档树模型,把文档映射成树形结构,通过节点对象对其处理,处理的结果可以加入到当前的页面。

 把HTML文档处理成树形结构(倒立的树),将一个html文档看作是一棵树,文档中的标签、标签的属性、标签的内容都是这课树的节点 。

强调:DOM的最顶端是----document;  BOM的最顶端是----window

DOM中的节点

文档(document):可以把一个页面当成一个文档。

元素(element):页面中的所有标签都是元素。

节点(node):网页中的所有内容,在文档树中都是节点(如:元素节点、属性节点、文本节点、注释节点等),在DOM中会把所有的节点都看作是对象,这些对象拥有自己的属性和方法。

获取元素

根据id获取元素

document.getElementById('id')方法:是由document对象提供的用于查找元素的方法,该方法返回的是拥有指定id的元素,如果没有找到指定id的元素则返回null,如果存在多个指定id的元素则返回undefined。

实例:

<html>
<body>
    <div id="d1">你好</div>
    <div id="box">你好</div>
    <div id="d3">西邮</div>

    <script>
        var Obox = document.getElementById('box');
        console.log(Obox)
    </script>
</body>
</html>
//输出为:<div id="box">你好</div>

根据标签获取元素

可以通过document对象获取元素和通过element对象获取元素。

语法格式:  document.getElementsByTagName('标签名');  (获取的是一个动态集合,当页面增加标签,这个集合也会自动增加元素。)

                    element.getElementsByTagName('标签名');

说明:由于相同标签名的元素可能有多个,上述方法返回的不是单个元素对象,而是一个集合。这个集合是一个类数组对象,或称为伪数组,它可以像数组一样用索引来访问元素,但不能使用push()等方法,使用Array.isArray()也可以证明它不是一个数组。

实例:

<html>
<body>
    <div id="d1">你好</div>
    <div id="box">你好</div>
    <div id="d3">西邮</div>

    <script>
        var arr = document.getElementsByTagName('div')
        console.log(arr)
        console.log(Array.isArray(arr))   //输出结果为false
    </script>
</body>
</html>

实例结果:

根据name获取元素

document.getElementsByName()方法:是通过name属性来获取元素,一般用于获取表单元素。name属性的值不要求必须是唯一的,多个元素也可以有同样的名字,如表单中的单选框和复选框。

语法格式:document.getElementsByName('name名');

实例:

<html>
<body>
    <p>请选择你喜欢的水果:</p>
    <!-- <input type="checkbox" name="fruit" id="d1">   复选框的另一种写法
    <label for="d1">西瓜</label> -->
    <label>
        <input type="checkbox" name="fruit" value="西瓜">
        西瓜
    </label>
    <label>
        <input type="checkbox" name="fruit" value="葡萄">
        葡萄
    </label>
    <label>
        <input type="checkbox" name="fruit" value="樱桃">
        樱桃
    </label>
    <script>
        var fruits = document.getElementsByName('fruit')  //返回值是一个集合
        console.log(Array.isArray(fruits))
        fruits[2].checked = true   //表示选中索引为2的选项
        console.log(fruits[1].value)   //输出索引为1的选项的value值
    </script>
</body>
</html>

实例结果:

根据class获取元素

document.getElementsByClassName()方法:用于通过类名来获得某些元素集合。

语法格式:document.getElementsByClassName('class属性值')

实例:

<html>
<body>
    <span class="one">语文</span>
    <span class="one">英语</span>
    <span class="two">数学</span>
    <span class="two">物理</span>
    <script>
        var s1 = document.getElementsByClassName('one');
        var s2 = document.getElementsByClassName('two')

        s1[0].style.color='red'  //让第一个元素的文字颜色为red
        s2[1].style.fontWeight = 'bold'  //设置文字加粗
    </script>
</body>
</html>

实例结果:

根据选择器获取元素

 (1)querySelector('选择器'):获取的是给定选择器的元素,一次只能找到一个元素,若多个元素的选择器相同只返回第一个元素。

 (2)querySelectorAll('选择器'):返回的是元素的集合。

<html>
<body>
    <div class="box">盒子1</div>
    <div clas="box">盒子2</div>
    <div id="nav">
        <ul>
            <li>首页</li>
            <li>产品</li>
        </ul>
    </div>

    <form action="">
        <label>用户名:</label>
    </form>

    <script>
        var firstdiv = document.querySelector('.box') //使用类选择器来获取元素,若选择器相同则只获取第一个
        console.log(firstdiv)   //获取class为box的第1个div

        var divs = document.querySelector('.box')
        console.log(divs[1])   //通过下标索引进行获取元素

        var nav = document.querySelector('#nav')  //使用id选择器
        console.log(nav)

        var li = document.querySelectorAll('li')  //获取所有的li
        console.log(li)
    </script>
</body>
</html>

实例结果:

 

以上是关于JavaScript中DOM,以及如何获取元素的主要内容,如果未能解决你的问题,请参考以下文章

Javascript--HTML DOM基础知识

JavaScript 与 DOM

如何在 javascript 中获取 DOM 元素的 HTML

如何使用 JavaScript 获取 DOM 元素的 ::before 内容?

Javascript的DOM中兼容问题以及解决兼容问题的方法

javascript 如何获得html DOM节点的属性值