• DOM增删改


    上一篇主要是针对查询的,本文主要针对的是DOM的增删改

    添加节点:

           1,appendChild() 用于向ChildNodes列表的末尾添加一个节点,返回新增的节点,如果传入到appendChild()中通的节点已经是文档的一部分了,那结果就是将该节点从原来的位置转移到新的位置。因此 如果在调用appendChild()传入了父节点的第一个子节点,那么该节点就会成为父节点的最后一个子节点

     1 <div>
     2     <ul>
     3         <li>1</li>
     4         <li>2</li>
     5         <li>3</li>
     6     </ul>
     7 </div>
     8  var a=document.getElementsByTagName('ul')[0];
     9  var node1=a.firstElementChild;
    10  var returnnode1=a.appendChild(node1);
    11  alert(returnnode1== a.lastElementChild);  // true
    12  alert(returnnode1== a.firstElementChild);  //  false  说明返回的就是添加的那个节点

    2,insertBefore(),该方法接收两个参数 要插入的节点和作为参照的节点,插入后被插入的节点就会变成参考节点的前一个同胞节点,同时被方法返回 插入成为第一个子节点 则var returnNode=someNode.insertBefore (newNode,someNode.firstChild); alert(returnNode==someNode.lastElementChild); 插入成为最后一个子节点 第二个参数 为null 即可 这个方法的关键是要理解:会插入到参考节点的前面

    删除节点

        removeChild() 该方法只接受一个参数 就是要删除的节点

    替换节点

         replaceChild()   第一个参数为要插入的节点 第二个参数为要替换的节点

    这个几个方法的共性是 操作的都是某个节点的子节点,使用之前必须先取到其父节点,另外不是所有类型的节点都有子节点(nodeType为 3,4,7,8,10,12的节点类型均为子节点)如果在这些节点上 调用上述方法会报错

    其他方法:

          1,cloneNode()  用于常见创建调用这个方法的节点的一个完全的副本(该方法不复制javascript属性 如事件处理程序) 接受一个参数

          为true 执行深复制 复制该节点及其整个子节点树

          为false 执行浅复制 只复制该节点

         2,和上面方法相似的还有importNode() 方法  该方法是document 对象上的方法 接受两个参数 要导入的节点 和 一个bool值  当为true时 复制子孙节点 为false时只复制 本级节点

    1 var a = document.getElementById('1123'); 
    2 var b = a.cloneNode(true); 
    3 document.getElementById('aaaa').appendChild(b); 
    4 var x=  document.importNode(a,true); 
    5 document.getElementById('aaaa').appendChild(x);

    注: 这两个方法复制的节点 可再次插入到之前的父节点中  这和上面的appendChild和insertBefore() 就有点区别了 appendChild() 和insertBefore() 如果插入已存在的节点则会将之前的节点指向新的位置 就是不能重复添加,但是cloneNode() 和importNode()  则产生的是一个新的对象 新的节点 因此能重复添加

          

     1       <div id="a1123"> 
     2            <ul id="uld"> 
     3                <li>123</li> 
     4            </ul> 
     5        </div>
     7             var a = document.getElementById('uld'); 
     8             var b = a.cloneNode(true); 
     9             document.getElementById('a1123').appendChild(a);//添加已存在的节点-无效果 
    10             document.getElementById('a1123').appendChild(b);//添加克隆后的节点 能添加
    11             var x=  document.importNode(a,true);
    12             document.getElementById('a1123').appendChild(x);//添加导入后的节点 能添加

    参考自:《JavaScrpt高级程序设计》 《JavaScrpt权威指南JavaScrpt》

  • 相关阅读:
    HDU 4745 Two Rabbits (区间DP)
    HDU 1007 Quoit Design最近点对( 分治法)
    acdream 小晴天老师系列——我有一个数列! (ST算法)
    HDU 3592 World Exhibition (差分约束,spfa,水)
    HDU 5501 The Highest Mark (贪心+DP,经典)
    HDU 5500 Reorder the Books (水题)
    HYSBZ 1010 玩具装箱toy (决策单调DP)
    POJ 3017 Cut the Sequence (单调队列优化DP)
    Vijos P1243 生产产品 (单调队列优化DP)
    PIVOT&UNPIVOT
  • 原文地址:https://www.cnblogs.com/ArthurXml/p/5391820.html
Copyright © 2020-2023  润新知