js知识整理(四)----Dom对象获取节点的方法

本文介绍了JavaScript中的DOM对象及其操作,包括DOM对象的概念、节点类型与属性,如nodeName、nodeType和nodeValue。详细讲解了如何获取元素节点对象,如通过getElementById、getElementsByTagName、getElementsByClassName以及通过父节点、子节点和兄弟节点的关系来间接获取元素。

1.什么是DOM对象

全称是:Document Object Model, 即:文档对象模型,它定义了操作文档对象的接口

2.DOM节点分类node

(1)结点的概念

在DOM模型中,整个文档就是由层次不同的多个节点组成,可以说结点代表了全部内容

(2)结点的类型

元素结点、文本结点和属性结点

<font id=“font1” color=“red”>hello DOM!</font> 
//font:元素结点
//id,color:属性结点
//hello DOM! :文本节点

文本节点和属性结点都看作元素结点的子结点
我们一般所说的结点指的就是元素结点。

(3)节点的基本属性:(注意结点类型不同,返回值不一样)
nodeName:

元素结点返回结点类型(即,标记名称)
属性结点返回undefined
文本节点返回"#text"

nodeType

元素节点返回1,属性节点返回2,文本节点返回3

nodeValue

元素节点返回null, 属性节点返回undefined, 文本结点返回文本值

3.DOM操作的内容

   <p id="p1"> 百日依山尽 </p>
    <p class="p2">黄河入海流 </p>
    <p class="p2"> 欲穷千里目 </p>
    <p> 更上一层楼 </p>

A、获得元素节点对象
1.直接引用结点

(1).使用document.getElementById()引用指定id的结点

<button onclick="getNodeById()">通过id获取节点 </button>
  function getNodeById(){
          // 拿到节点 
          var pNode = document.getElementById("p1");
          console.log(pNode);
          console.log(pNode.nodeName) // p
      }

(2).使用document.getElementsByTagName(“a”),将所有元素结点放到一个数组中返回。

 <button onclick="getNodeByTag()">通过name属性获取节点 </button><br>
 
        function getNodeByTag(){

            // 可以获取所有的 TAG 的节点 
            // 返回值是数组 
            var pNodes = document.getElementsByTagName("p");

            for(var i = 0 ; i < pNodes.length;i++){
                var pNode = pNodes[i];
                console.log(pNode);
                console.log(pNode.nodeName) // p
            }
        }

(3).使用document.getElementsByName(“abc”),将所有name属性为”abc”的元素结点放到一个数组中返回

     name:<input type="text"  name="name"><br>
   性别 <input type="radio" value="男" name="sex"><br>
   <input type="radio" value="女" name="sex"><br>
   <input type="radio" value="不详" name="sex">不详<br>

    <button onclick="getNodeByName()">通过name获取节点 </button><br>
     function getNodeByName(){
            
            // 可以获取name 属性值 节点 
            // 返回值是数组 
            var radios = document.getElementsByName('sex');
            for(var i = 0 ; i < radios.length;i++){
                var radio = radios[i];
                console.log(radio);
                console.log(radio.nodeName) // input
            }
        }

(4).使用document.getElementsByClassName(“abc”)将所有class属性为”abc”的元素结点放到一个数组中返回。

 <button onclick="getNodeByClassname()">通过class名称获取节点 </button><br>
 
        function getNodeByClassname(){

            // 可以获取所有的 class="p2"的节点 
            // 返回值是数组 
            var pNodes = document.getElementsByClassName("p2");

            for(var i = 0 ; i < pNodes.length;i++){
                var pNode = pNodes[i];
                console.log(pNode);
                console.log(pNode.nodeName) // p
            }
        }
2.DOM间接获得元素对象
 
    <div id="parent">
        <p id="p1"> 百日依山尽 </p>
        <p id="p2">黄河入海流 </p>
        <p class="p2"> 欲穷千里目 </p>
        <p> 更上一层楼 </p>
    </div>

(1).引用子结点

 <button onclick="getNodeBySon()"> 通过子节点获取父节点 </button>
 // 通过子节点 获取父节点 
        function getNodeBySon(){
            // 拿到子节点 
            var p1Node = document.getElementById("p1");

            // parentNode 获取父节点 
           var parentNode = p1Node.parentNode;
           console.log(parentNode);
        }  

(2).引用父节点

父节点有对应的方法可以获取不同位置的子节点
firstChild 拿到第一个孩子 会包含空格
lastChild 拿到最后一个孩子 会包含空格

firstElementChild; 拿到第一个元素 不会包含空格
lastElementChild 拿到最后一个元素 不会包含空格

children 所有的孩子 不包含空节点
childNodes 返回会是所有子节点是数组 (包含空格)
代码示例:

 <button onclick="getNodeByParent()"> 通过父节点获取子节点 </button>
 function getNodeByParent(){

            // 拿到父节点 
            var divNode = document.getElementById("parent");

            // 通过div拿到子节点 
            var pNodes = divNode.childNodes; // 返回会是所有子节点是数组 (包含空格)

            for(var i = 0 ; i <  pNodes.length; i ++){
                // 拿到节点 打印 
                var pNode = pNodes[i];
                console.log(pNode.nodeName);
            }
  }

(3). 引用兄弟结点
注意:nextElementSibling 只有元素,不包含空格
nextSibling 如果有空格 会包含空格

<button onclick="getNodeByBrohter()"> 通过节点获取兄弟节点 </button>
 function getNodeByBrohter(){

            // 拿到节点 p2
            var p2Node = document.getElementById("p2");

            // 下一个兄弟节点 (只有元素 不包含 空格 )
            var p2Next = p2Node.nextElementSibling;
            console.log(p2Next);
            // 下一个兄弟节点 (如果有空格 会包含空格)
            var p2Next2 = p2Node.nextSibling;
            console.log(p2Next2);

            // p2Node.previousSibling 获取上一个兄弟节点 
        }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值