我試圖獲取給定元素的第一個和最後一個節點。防止.lastChild返回回車?
document.getElementById('test').firstChild
document.getElementById('test').lastChild
http://codepen.io/FezVrasta/pen/gaPJXe
的問題是lastChild功能回到我只是一個回車符,而不是最後的有用節點。
什麼是最好的方式返回我最後一個元素或文本節點,不包括回車?
我試圖獲取給定元素的第一個和最後一個節點。防止.lastChild返回回車?
document.getElementById('test').firstChild
document.getElementById('test').lastChild
http://codepen.io/FezVrasta/pen/gaPJXe
的問題是lastChild功能回到我只是一個回車符,而不是最後的有用節點。
什麼是最好的方式返回我最後一個元素或文本節點,不包括回車?
通過previousSibling
s直到找到一個元素節點。
的nodeType == 1
意味着它是一個元素節點......看到documention for all types
var lastElement = document.getElementById('test').lastChild;
while (lastElement != null && lastElement.nodeType != 1) {
lastElement = lastElement.previousSibling;
}
if (lastElement != null) {
document.getElementById("output").innerHTML = lastElement.id;
}
<div id="test">
<div id="div1">a</div>
<div id="div2">b</div>
<div id="div3">c</div>
<div id="div4">d</div>
</div>
<div id="output"></div>
lastChild
和firstChild
返回元素的第一個和最後一個子節點,這可以是一個元素,文本節點或評論。如果你想獲得第一和最後一個子元素,你可以使用:
document.getElementById('test').firstElementChild
document.getElementById('test').lastElementChild
應該在所有現代瀏覽器
不知道是否存在...雖然如果你需要支持IE8及以下(是的,我知道,但我們中的一些人仍然不幸)它不會工作 – freefaller
謝謝,但我更尋找一種方法來獲得不包括回車的lastChild,我甚至想要文本節點。 –
嘗試中'test' – freefaller
我不能刪除子元素之間的所有空白支持編輯源代碼,我必須使用javascript。 –
如果您想要最後一個元素,而不是最後一個子元素(如果該子元素可以是文本節點),則向後循環遍歷所有子元素,直到找到一個元素爲止。 – Quentin