首頁 >web前端 >js教程 >常用DOM整理_javascript技巧

常用DOM整理_javascript技巧

WBOY
WBOY原創
2016-05-16 15:54:461063瀏覽

前言:

html為document搭建了一棵DOM樹,這棵樹就是有一系列Node節點所構成的。他為我們定義了文檔的結構。

Node型別:

Node.ELEMENT_NODE(1);      //元素節點較常用
Node.ATTRIBUTE_NODE(2);    //屬性節點較常用
Node.TEXT_NODE(3);          //文字節點較常用
Node.CDATA_SECTION_NODE(4);
Node.ENTITY_REFERENCE_NODE(5);
Node.ENTITY_NODE(6);
Node.PROCESSING_INSTRUCTION_NODE(7);
Node.COMMENT_NODE(8);
Node.DOCUMENT_NODE(9);   //文件節點較常用
Node.DOCUMENT_TYPE_NODE(10);
Node.DOCUMENT_FRAGMENT_NODE(11);
Node.NOTATION_NODE(12);

相關函數:

1、取得節點:

 document.getElementById('element');
 document.getElementsByTagName('element');         傳回類別陣列物件
 document.getElementsByName('element');            傳回類別陣列物件
 document.getElementsByClassName('className')      返回類別數組物件,IE7及以下並不支援;
 document.querySelectorAll('class' | 'element')    傳回類別數組物件

2、遍歷節點

 查找子節點:element.childNodes        傳回類別陣列物件
 找出第一個子節點:element.firstChild
 找出最後一個子節點:element.lastChild
 查找父元素:element.parentNode
 找出前一個兄弟元素: element.previousSibling
 找出後一個兄弟元素: element.nextSibling

3、取得節點資訊

 取得元素或屬性節點的標籤名稱:elementNode.nodeName
 取得文字節點的內容:    textNode.nodeValue;
 取得並設定元素節點的內容(可能會包含HTML標籤):  elementNode.innerHTML
 取得並設定元素節點的純文字內容:element.innerText(IE) | element.textContent(FF) 
 取得屬性節點的值:      attrNode.getAttribute(AttrName);
 設定屬性節點的值:      attrNode.setAttribute(AttrName,AttrValue);
 取得節點的類型:        node.nodeType;
  元素節點: 1;
  屬性節點: 2;
  文字節點: 3;
  文件節點: 9;
  註解節點: 8;

4、操作節點

 建立元素節點:       document.createElement('element');
 建立文字節點:       document.createTextNode('text');
 建立屬性節點:       document.createAttribute('attribute');
 刪除節點:               node.remove();
 刪除子節點:           parentNode.removeChild(childNode);
 插入節點:               parentNode.appendChild(childNode);  //插入父節點的尾端
                              複製節點:               node.cloneNode([true])     //傳入true為深度複製
 替換節點:               parentNode.replaceChild(newNode,oldNode);

相關拓展:


1、由於IE低版本瀏覽器和其他瀏覽器在處理DOM中存在不相容,因此要做一些簡單的封裝處理。


 
//=================
function getElementChildren(element) {
   var children = [],
   oldChildNodes = element.childNodes;
   for(var i=0, len=oldChildNodes.length; i<len; i+=1) {
     if(oldChildNodes[i].nodeType == 1) {
        children.push(oldChildNodes[i]);
     }
   }
 return children;
}
 
//==================
function getElementNext(element) {
   var next = element.nextSibling || null;
     if(next) {
       if(next.nodeType == 1) {
          return next;
       } else {
          return arguments.callee(next);
       }
     } else {
     throw new Error("下一个兄弟元素不存在!");
     }
}
 
//======================
function getElementPrev(element) {
   var prev = element.previousSibling || null;
   if(prev) {
     if(prev.nodeType == 1) {
       return prev;
     } else {
       return arguments.callee(prev);
     }
   } else {
     throw new Error("上一个兄弟元素不存在!");
   }
}
 
2、操作DOM元素的樣式

 

//=========================
function getElementStyle(element,styleName) {
   if(typeof getComputedStyle != 'undefined') {
     return getComputedStyle(element,null)[styleName];
   } else {
     return element.currentStyle[styleName];
   }
}
 
//==========================
function addClass(element,className) {
   element.className += className;
}
 
//==========================
function removeClass(element,removeClassName) {
   var classStr = element.className;
   element.className = classStr.replace(removeClassName,'').split(/\s+/).join(' ').replace(/^\s+/,'').replace(/\s+$/,'');
}
以上所述就是本文的全部內容了,希望大家能夠喜歡。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn