一、節點
- 文字節點,IE8以下空格節點獲取不到。
- 元素節點
div
。
- 屬性節點
class
、id
、value
。
- 註釋節點
<div id="wrap">
<div class="position">
<div id="box" class="box1" data-title="這也是節點" abc="133">
你好嗎!!!
<span id="my-span">這是個span</span>
<p>這是一個p標籤</p>
<ul>
<li>這是li標籤1</li>
<li>這是li標籤2</li>
<li>這是li標籤3</li>
</ul>
</div>
<div id="box2"></div>
</div>
</div>
複製程式碼
二、獲取節點
- 獲取子代節點(動態獲取)。
ele.childNodes
:文字節點、元素節點。ele.children
:只獲取元素節點。
- 獲取第一個子代節點。
ele.firstChild
:返回第一個包括文字節點和註釋節點。ele.firstElementChild
:獲取第一個元素節點。
- 獲取最後一個子代節點。
ele.lastChild
:獲取到文字和註釋節點。ele.lastElementChild
:獲取最後一個元素節點。
- 獲取父親節點。
ele.parentNode
:獲取父親節點。ele.offsetParent
:找到定位父級。
- 下一個兄弟節點。
ele.nextSibling
:獲取到下一個節點,包括文字、註釋節點。ele.nextElementSibling
:只獲取元素節點。
- 上一個兄弟節點。
ele.previousSibling
:獲取到下一個節點,包括文字、註釋節點。ele.previousElementSibling
:只獲取元素節點。
- 獲取子元素節點的數量。
ele.childElementCount
。
三、節點的操作
- 建立節點:
document.createElement('nodename')
,放標籤名,建立元素節點,建立節點是document的方法,建立完的節點可以直接進行dom操作。
- 建立文字節點:
createTextNode
。
- 刪除節點:
parentNode.removeChild(node)
,刪除節點只能從父級開始刪除,不能自己刪除自己。
- 克隆節點:
cloneNode()
,克隆只克隆元素本身還有元素節點,不會克隆事件,可以接受一個布林型別,若是true,則克隆子孫元素。
- 新增節點:
parentNode.appendChild(node)
,只能從父級節點開始新增,新增位置在最後的子節點後面。
- 替換節點:
parentNode.replaceChild(new, old)
,第一個用來替換新元素,第二個被替換元素。
- 在節點前新增節點:
parentNode.insertBefore(new, old)
,第一個用來插入的新元素,第二個在這個元素前插入。
var oBox = document.getElementById('box'),
oSpan = document.getElementById('my-span');
oBox.onclick = function(){
alert(1)
}
var oBox2 = oBox.cloneNode(true);
wrap.appendChild(oBox2);
console.log(oBox2)
複製程式碼
var oP = document.createElement('p');
oP.innerHTML = '我是一個p標籤';
oP.onclick = function() {
alert('我是p標籤的點選事件')
}
oBox.appendChild(oP);
var oText = document.createTextNode('我很好!!!');
oBox.appendChild(oText);
console.log(oText)
複製程式碼
四、節點屬性
- 獲取節點屬性。
ele.getAttribute(key)
,節點名稱,直接返回值。ele.getAttributeNode
,返回節點物件。
- 設定節點屬性。
ele.setAttribute(key, value)
,不要用數字來當做key。ele.setAttributeNode(node)
,node是一個節點物件。
- 建立節點物件。
document.createAttribute("nodeName")
,建立完之後要設定value值。
- 刪除節點物件。
ele.removeAttribute(key)
- 節點型別。1--element--元素節點、3--#text--文字節點、8--#comment--註釋節點、9--document--文件節點。
- tagName是隻有元素節點才有,nodeName是所有節點都有。
var oBox = document.getElementById('box');
oBox.removeAttribute('abc');
console.log(document.nodeType);
複製程式碼