JS 节点笔记

 h5新增自定义属性

    为了保存并使用数据,有一些数据不必要保存到数据库中;
    data开头作为自定义属性并赋值
    兼容性获取element.getAttribute("data-自定义属性名")
    h5新增element.dataset.属性名 或者element.dataset['属性名']
    注意
    如果自定义属性有多个连接起来的 获取的时候一定要用驼峰命名法
    <div class="conter" id="conter"></div>
 1 <div class="conter" id="conter"></div>
 2     var div = document.getElementById("conter")
 3 
 4     div.setAttribute("data-index", 1)
 5 
 6     div.setAttribute("data-list-name", 1000)
 7     // getAttribute获取
 8     console.log(div.dataset);
 9     console.log(div.getAttribute("class"));
10     console.log(div.getAttribute("data-index"));
11 
12     // h5新增获取自定义属性方法
13     console.log(div.dataset.index);
14     console.log(div.dataset["index"]);
15 
16     console.log(div.dataset.listName);
17     console.log(div.dataset["listName"]);

 节点操作

    利用节点层次关系获取元素
    元素节点 nodeType为1
    属性节点 nodetype为2
    文本节点 nodeType为3 文本节点包括文字、空格、换行等
 

    节点层次

    父子兄层次关系

    1、父级节点

    node.parentNode
    得到的是离他最近的节点 如果没有父节点就返回null
 1     <div class="box">
 2         <span class="erweima">2</span>
 3         <ul class="ul">
 4             <li>2</li>
 5             <li>2</li>
 6         </ul>
 7     </div>    
 8 var box = document.querySelector("box")
 9     console.log(box);
10     // 父节点parentNode
11     var erweima = document.querySelector(".erweima")
12     // 得到的是离他最近的节点  如果没有父节点就返回null
13     console.log(erweima.parentNode);

 

    子节点

    parentNode.children 非标准 但是现在的浏览器都支持
    子节点childNode 获取到所有的子节点 包括换行
 1     <ol class="ol">
 2         <li>123</li>
 3         <li>123</li>
 4         <li>123</li>
 5         <li>123</li>
 6         <li>123</li>
 7     </ol>
 8 // 子节点childNode 获取到所有的子节点 包括换行
 9     var ul = document.querySelector(".ul")
10     // console.log(ul.childNodes);
11     console.log(ul.children);
12 
13     var ol = document.querySelector(".ol")
14     // firstChild获取到的是第一个节点
15     console.log(ol.firstChild);
16     // lastchild获取到的啊最后一个节点
17     console.log(ol.lastChild);
18 
19 
20     // 兼容性问题不推荐使用  ie9以上支持
21     console.log(ol.firstElementChild);
22     console.log(ol.lastElementChild);
23 
24     // 实际开发常用的是
25     console.log(ol.children[0]);
26     console.log(ol.children[ol.children.length - 1]);

 

 

    兼容性问题

    node.previousElementSibling 得到上一个元素节点
    node.nextElementSibling 得到下一个元素节点
 
1     <div class="group">ssss</div>
2     <span>4556</span>   
3  var div = document.querySelector(".group")
4     console.log(div.nextSibling);
5     console.log(div.nextElementSibling);
6     console.log(div.previousElementSibling);

 


    创建节点

    document.createElement("节点名")
    node.appendChild(child) 后面追加元素类似于数组的push
    node.insertBefore(child,指定元素) 在指定元素前面添加元素

    注意

    我们想要在页面添加元素首先要先创建元素然后再添加元素
<ul class="ul2">
        <li>123</li>
    </ul>
    <script>
        // 创建节点
        var li = document.createElement("li")
        var lis = document.createElement("li")
        // 添加节点node.appendChild(child)  node父节点 child是子节点
        var ul = document.querySelector(".ul2")
        ul.appendChild(li)
        ul.insertBefore(lis, ul.children[0])
    </script>

 删除节点

    node.removeChild(child) 删除父元素中的一个子节点
 1 <button class="button2">删除</button>
 2     <ul class="ul3">
 3         <li>1</li>
 4         <li>12</li>
 5         <li>13</li>
 6     </ul>
 7     <script>
 8         var ul = document.querySelector(".ul3")
 9         var btn = document.querySelector(".button2")
10         btn.onclick = function () {
11             if (ul.children.length == 0) {
12                 this.disabled = false
13             } else {
14                 ul.removeChild(ul.children[0])
15             }
16     
17     
18         }
19     </script>

 

 

复制节点

    node.cloneNode()  如果括号里面是空的或者是false就只复制了标签 不复制内容  如果括号里面是true 就可以复制内容
 1  <ul class="ul4">
 2         <li>1</li>
 3         <li>16</li>
 4         <li>12</li>
 5         <li>13</li>
 6     </ul>
 7     <script>
 8         var ul = document.querySelector(".ul4")
 9         var lis = ul.children[0].cloneNode(true);
10         ul.appendChild(lis)
11     </script>

 

posted @ 2020-04-01 11:26  徐12  阅读(182)  评论(0编辑  收藏  举报