访问元素节点

  • 所谓“访问”元素节点,就是指“得到”、“获取”页面上的元素节点。
  • 对节点进行操作,第一步就是要得到它。
  • 访问元素节点主要依靠document对象。

认识document对象

  • document对象是DOM中最重要的东西,几乎所有DOM的功能都封装在了document对象中。
  • document对象也表示整个HTML文档,它是DOM节点树的根。
  • document对象的nodeType属性值是9

访问元素节点的常用方法

方法

功能

兼容性

document.getElementById()

通过id得到元素

IE6

document.getElementsByTagName()

通过标签名得到元素数组

IE6

document.getElementsByClassName()

通过类名得到元素数组

IE9

document.querySelector()

通过选择器得到元素

IE8部分兼容、 IE9完全兼容

document.querySelectorAll()  

通过选择器得到元素数组

IE8部分兼容、 IE9完全兼容

getElementById()

  • document.getElementById()功能是通过id得到元素节点。

注意事项:

  • 如果页面上有相同id的元素,则只能得到第一个。
  • 不管元素藏的位置有多深,都能通过id把它找到。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="box">我是一个盒子</div>
    <div id="box">
        我是二个盒子
        <p id="para">我是一个段落</p>
        <p id="para">我是二个段落</p>
    </div>
    <script>
        // 参数就是元素节点的id ,注意不要写#号
        var oBox = document.getElementById('box');
        var oPara = document.getElementById('para');
        console.log(oBox);
        console.log(oPara);
    </script>
</body>

</html>


getElementsByTagName()

  • getElementsByTagName()方法的功能是通过标签名得到节点数组。

注意事项:

  • 即使页面上只有一个指定标签名的节点,也将得到长度为1的数组。
  • 数组方便遍历,从而可以批量操控元素节点。
  • 任何一个节点元素也可以调用getElementsByTagName()方法,从而得到其内部的某种类的元素节点。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        <p>盒子一,段落一</p>
        <p>盒子一,段落二</p>
        <p>盒子一,段落三</p>
    </div>
    <div>
        <p>盒子二,段落一</p>
    </div>

    <script>
        // 获得div的节点数组
        var oBoxL = document.getElementsByTagName('div');
        console.log('获得div的节点数组');
        console.log(oBoxL);
        // 第一个div中的p节点数组
        var oPL1 = oBoxL[0].getElementsByTagName('p');
        console.log('第一个div中的p节点数组');
        console.log(oPL1);
        // 第二个div中的p节点数组
        var oPL2 = oBoxL[1].getElementsByTagName('p');
        console.log('第二个div中的p节点数组');
        console.log(oPL2);
    </script>
</body>

</html>


getElementsByClassName()

  • getElementsByClassName()方法的功能是通过类名得到节点数组。

注意事项:

  • getElementsByClassName()方法从IE9开始兼容。

  • 某个节点元素也可以调用getElementsByClassName()方法,从而得到其内部的某类名的元素节点。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box">
        <p class="para">盒子一,段落一</p>
        <p class="para">盒子一,段落二</p>
        <p class="para">盒子一,段落三</p>
    </div>
    <div class="box">
        <p class="para">盒子二,段落一</p>
    </div>

    <script>
        // 获得类名为box的节点数组
        var oBoxL = document.getElementsByClassName('box');
        console.log('获得类名为box的节点数组');
        console.log(oBoxL);
        // 第一个box中的类名为para的节点数组
        var oPL1 = oBoxL[0].getElementsByClassName('para');
        console.log('第一个box中的类名为para的节点数组');
        console.log(oPL1);
        // 第二个box中的类名为para的节点数组
        var oPL2 = oBoxL[1].getElementsByClassName('para');
        console.log('第二个box中的类名为para的节点数组');
        console.log(oPL2);
    </script>
</body>

</html>


querySelector()

  • querySelector()方法的功能是通过选择器得到元素。

注意事项:

  • querySelector()方法只能得到页面上一个元素,如果有多个元素符合条件,则只能得到第一个元素。
  • querySelector()方法从IE8开始兼容,但从IE9开始支持CSS3的选择器,如:nth-child()等CSS3选择器形式都支持良好。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box1">
        <p class="para">盒子一,段落一</p>
        <p class="para">盒子一,段落二</p>
        <p class="para">盒子一,段落三</p>
    </div>
    <div class="box2">
        <p class="para">盒子二,段落一</p>
    </div>

    <script>
        // 获得类名为box1的div元素
        var oBox1 = document.querySelector('div.box1');
        console.log('获得类名为box1的div元素');
        console.log(oBox1);
        // 获得box1中类名为para的p元素
        // 虽然有多个符合选择器的p元素
        // 但是只会得到第一个复合条件的元素。
        var oPL1 = oBox1.querySelector('p.para');
        console.log('获得box1中类名为para的p元素');
        console.log(oPL1);
    </script>
</body>

</html>

 


querySelectorAll()

  • querySelectorAll()方法的功能是通过选择器得到元素数组。
  • 即使页面上只有一个符合选择器的节点,也将得到长度为1的数组。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box1">
        <p class="para">盒子一,段落一</p>
        <p class="para">盒子一,段落二</p>
        <p class="para">盒子一,段落三</p>
    </div>
    <div class="box2">
        <p class="para">盒子二,段落一</p>
    </div>

    <script>
        // 获得类名为box1的所有div元素数组
        var oBox1 = document.querySelectorAll('div.box1');
        console.log('类名为box1的所有div元素数组');
        console.log(oBox1);
        // 获得box1中类名为para的所有p元素数组
        var oPL1 = oBox1[0].querySelectorAll('p.para');
        console.log('box1中类名为para的所有p元素数组');
        console.log(oPL1);
    </script>
</body>

</html>


延迟运行

  • 在测试DOM代码时,通常JS代码一定要写到HTML节点的后面,否则JS无法找到相应HTML节点。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 参数就是元素节点的id ,注意不要写#号
        var oBox = document.getElementById('box');
        var oPara = document.getElementById('para');
        console.log(oBox);
        console.log(oPara);
    </script>
    <div id="box">我是一个盒子</div>
    <div id="box">
        我是二个盒子
        <p id="para">我是一个段落</p>
        <p id="para">我是二个段落</p>
    </div>
</body>

</html>

  • 可以使用window.onload = function(){} 事件,使页面加载完毕后,再执行指定的代码。
  • 使用了window.onload = function(){} 事件后,JS代码不仅可以写到HTML节点的前面,还可以直接写在head标签对中。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function() {
            // 参数就是元素节点的id ,注意不要写#号
            var oBox = document.getElementById('box');
            var oPara = document.getElementById('para');
            console.log(oBox);
            console.log(oPara);
        }
    </script>

</head>

<body>
    <div id="box">我是一个盒子</div>
    <div id="box">
        我是二个盒子
        <p id="para">我是一个段落</p>
        <p id="para">我是二个段落</p>
    </div>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值