zoukankan      html  css  js  c++  java
  • js 关于node节点的一些总结

    DOM中的node。

    节点对象代表文档树中的一个节点。

    这就是一个文档树,摘至于W3C。

    节点有很多类型:

    元素  nodeType
    文档(DOCUMENT_NODE) 9
    注释(COMMENT_NODE) 8
    文本(TEXT_NODE) 3
    属性(ATTRIBUTE_NODE) 2
    元素(ELEMENT_NODE) 1

    这里我们比较常用的有元素节点,属性节点跟文本节点。

    一般节点中常用的有3个属性。

    nodeType  返回的是节点的类型,如上图。

    nodeName  返回的是节点名称。

      元素节点返回的是元素名称(注意:返回的是大写)

      属性节点返回的是属性名称

      文本节点返回的是#text

      文档节点返回的是#document

    nodeValue  返回的是节点的值

      文本节点返回的是文本的内容 

      属性节点返回的是属性的值

      文档节点和元素节点返回的是null   不可用。

    下面来看一些例子:

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <title>test</title>
     5     <script type="text/javascript">
     6         window.onload = function () {
     7             var p = document.getElementsByTagName("p")[0];         //取得p元素
     8             alert("p nodeName : " + p.nodeName)        //返回P
     9             alert("p nodeType : " + p.nodeType);       //返回1
    10             alert("p nodeValue :" + p.nodeValue);       //返回null
    11 
    12             var attr = p.attributes;         //获取p的属性
    13           //  alert(attr.length);           //定义了2个属性
    14             for (var i = 0;i < attr.length;i++) {
    15                 alert("attr nodeName :"+attr[i].nodeName)      //输出属性的名字  id     class
    16                 alert("attr nodeType :"+attr[i].nodeType)       //输出属性的节点类型2     2
    17                 alert("attr nodeValue :"+attr[i].nodeValue)     //输出属性的值  p1       class1
    18             }
    19 
    20             var text1 = p.childNodes[0];                    //p的内部为文本,所以p的子节点就是文本   
    21 
    22             alert("text nodeName:"+text1.nodeName)          //节点名字#text
    23             alert("text nodeType:"+text1.nodeType)           //节点类型 3
    24             alert("text nodeValue:" + text1.nodeValue)         //节点的值就是文本的内容  this is text
    25             alert("text data:" + text1.data)                 //效果一样  获取文本内容
    26                                                               
    27         }
    28     </script>
    29 </head>
    30 <body>
    31     <p id="p1" class="class1">this is text</p>
    32 </body>
    33 </html>

    关于节点的一些操作。

    创建节点,节点包括很多类型,根据不同类型,创建是不同的方法。

    在body中创建一个元素P的节点

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <title>test</title>
     5     <script type="text/javascript">
     6         window.onload = function () {
     7            
     8             var nP = document.createElement("p");      //创建元素节点P
     9             nP.innerText = "this is new p";             //设置P的内容
    10             document.getElementsByTagName("body")[0].appendChild(nP);   //在body中添加
    11 
    12             var nattr = document.createAttribute("id");       //创建属性节点  id
    13             nattr.value = "p2";                                 //创建属性的值 p2
    14             nP.setAttributeNode(nattr);                       //在nP中添加属性
    15             alert("nattr nodeName:" + nP.attributes[0].nodeName + " nattr nodeValue " + nP.attributes[0].nodeValue);   //输出属性名 id  值p2
    16 
    17             var ntext = document.createTextNode("这是文本节点");       //创建文本节点  
    18             nP.appendChild(ntext);                                    //添加文本节点到np中
    19              
    20         }
    21     </script>
    22 </head>
    23 <body>
    24 </body>
    25 </html>

     删除,替换,遍历。

    <script>
                var div1 = document.getElementById("div1");    
                var chl1 = div1.childNodes[0];       //获取要删除的子节点
                //div1.removeChild(chl1);             //删除子节点
               // alert(div1.innerText)
                var h1 = document.createElement("h1");
                //div1.appendChild(h1);
                var h1_text = document.createTextNode("this is h1");
                h1.appendChild(h1_text)
                div1.replaceChild(h1, chl1);      //替换了原来的P元素
                h1.appendChild(chl1);             //添加为h1的子元素
    
                var ul1 = document.getElementById("ul1");      //获取ul元素  遍历节点,取出元素中的文本
                var childs = ul1.childNodes;                   //获取ul子节点  ,子节点包括属性节点,文本节点,元素节点
                var childstxt = "";    
               // alert("length:" + childs.length);              
                for (var i = 0; i < childs.length; i++) {       //遍历节点
                    if (childs[i].nodeType == 1) {                //找出元素节点li
                        childstxt += childs[i].childNodes[0].nodeValue;   // 取出li节点中的文本
                    }
                }
                alert("childs nodeValue: "+childstxt);     //输出全部文本节点内容  li1li2li3li4li5li6



    </script>
     1 <body>
     2     <div id="div1"><p>text</p></div>
     3     <p id="p1" class="class1">this is text</p>
     4 
     5 
     6     <ul id="ul1" >
     7         <li>li1</li>
     8         <li>li2</li>
     9         <li>li3</li>
    10         <li>li4</li>
    11         <li>li5</li>
    12         <li>li6</li>
    13    </ul>
    14 </body>

    介绍了一下里面的方法,node还有一些便于查找的属性。

    childNodes   返回节点到子节点的节点列表。

    firstChild   返回第一个子节点

    lastChild   返回最后一个子节点

    nextSibling   返回节点之后紧跟的同级节点。

    parentNode   返回节点的父节点

    previousSibling  返回节点之前的同级节点 

      

  • 相关阅读:
    第八天
    第六天 yum 磁盘分区与格式化
    第五天 权限掩码vim编辑器 软件包安装和管理
    第12组 Alpha冲刺 总结
    第12组 Alpha冲刺(6/6)
    第12组 Alpha冲刺(5/6)
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
    第12组 Alpha冲刺(1/6)
  • 原文地址:https://www.cnblogs.com/joe2014/p/3823502.html
Copyright © 2011-2022 走看看