JS經常使用操做節點的方法

js常見的建立dom節點的方法有html

createElement() 建立一個元素節點 => 接收參數爲string類型的nodenamenode

createTextNode() 建立一個文本節點 => 接收參數爲string類型的text內容瀏覽器

createAttribute() 建立一個屬性節點 => 接收參數爲string類型的屬性名稱app

createComment() 建立一個註釋節點 => 接收參數爲string類型的註釋文本dom

1、建立DOM節點
使用的命令是優化


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

這樣就建立了一個div標籤。spa

2、插入DOM節點code

移動DOM節點也就是把這個節點插入到html文檔中的某個地方,這裏js給了咱們兩個方法:htm

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];

5、替換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);

相關文章
相關標籤/搜索