zoukankan      html  css  js  c++  java
  • JS常用操作节点的方法

    js常见的创建dom节点的方法有

    createElement() 创建一个元素节点 => 接收参数为string类型的nodename

    createTextNode() 创建一个文本节点 => 接收参数为string类型的text内容

    createAttribute() 创建一个属性节点 => 接收参数为string类型的属性名称

    createComment() 创建一个注释节点 => 接收参数为string类型的注释文本

    一、创建DOM节点
    使用的命令是


    var oDiv = document.createElement('div');

    这样就创建了一个div标签。

    二、插入DOM节点

    移动DOM节点也就是把这个节点插入到html文档中的某个地方,这里js给了我们两个方法:

    1.appendChild():把节点插入到父节点的末尾。

    document.body.appendChild(oDiv);   //把div插入到body中,并且位于末尾

    2.insertBefore():把节点插入到父节点的某个兄弟节点的前面。

    var oP = createElement('p');  //创建一个p节点
    document.body.insertBefore(oP,oDiv); //把p节点插入到div的前面

    三.删除DOM节点

    删除DOM节点的方法是removeChild()。

    document.body.removeChild(oP);  //删除p节点

    四.查找DOM节点

    查找DOM节点的方法很多,常用的有:

    getElementById()    //通过元素Id,唯一性

    如html文档如下:


    <body>
        <div id='box'></div>
    </body>

    这是可以使用getElementById()获取到id为box的div。

    var oDiv = document.getElementById('box');

    2.getElementsByTagName()   //通过元素的标签名来选择元素

    var aDiv = getElementsByTagName('div');
    要注意的是,getElementsByTagName()获取的是一组元素,所以如果想取得上面那个id为box的div要在后面加上[0];

    var oDiv = getElementsByTagName('div')[0];

    五、替换DOM节点

    替换DOM节点的方法是replaceChild()。

    var oSpan = document.createElement('span'); //创建一个span标签
    document.body.replaceChild(oSpan,oBox); //用span标签替换div标签
    最常用的DOM操作就是这些了,其他还有很多的方法,就目前而言,各浏览器兼容性不太好,所以还是推荐大家暂时只使用上述这些方法。

    DocumentFragment节点不属于文档树,继承的parentNode属性总是null。它有一个很实用的特点,当请求把一个DocumentFragment节点插入文档树时,插入的不是DocumentFragment自身,而是它的所有子孙节点。这个特性使得DocumentFragment成了占位符,暂时存放那些一次插入文档的节点。它还有利于实现文档的剪切、复制和粘贴操作。 
    另外,当需要添加多个dom元素时,如果先将这些元素添加到DocumentFragment中,再统一将DocumentFragment添加到页面,会减少页面渲染dom的次数,效率会明显提升。

    DocumentFragment文档碎片(高效批量更新多个节点) 

    原始方法:

    var parentNode = document.getElementsByTageName('ul')[0];

    function appendDataToElement  (appendToElement, num) {

      let node; 

      for (let i = 0; i < num.length; i++) {

        node = document.createElement('li');

        node.innerHTML = i;

        appendToElement.appendChild(node);

      }

    }

    appendDataToElement (parentNode, num);

    优化后:

    var parentNode = document.ElementsByTageName('ul')[0],

       fragment = document.createDocumentFragment();

    function appendDataToElement(appendToElement, num) {

      let node;

      for (let i = 0; i < num.length; i++) {

        node = document.createElement('li');

        node.innerHTML = i;

        fragment.appendChild(node);

      }

      appendToElement.appendChild(fragment);

    }

    appendDataToElement(parentNode, num);

  • 相关阅读:
    [置顶] java 通过classloader加载类再通过classforname实例化
    Linux内核源代码解析——用户发送数据包的起源之sendto
    POJ 2774 Long Long Message&&HDU 1403 Longest Common Substring&&COJ 1203
    add-two-numbers-ii
    【转载】React初学者入门须知
    【Todo】【转载】ES6的学习记录
    【转载】Java中如何写一段内存泄露的程序 & ThreadLocal 介绍和使用
    【Todo】深入理解Javascript系列
    【转载】什么是优秀技术团队
    【转载】React入门-Todolist制作学习
  • 原文地址:https://www.cnblogs.com/leftJS/p/10938874.html
Copyright © 2011-2022 走看看