Chrome忽略空白文本節點
實在搞不懂如何通過代碼實現跳過空白文本節點
舉了個簡單的例子,下面代碼如何通過previousSibling拿到【Hello】?這么執行后拿到的是undefined....
<ul>???? ????<li>Hello</li>???? ????<li>World</li>???? </ul>???? <script?type="text/javascript">???? var?node?=?document.getElementsByTagName("li");???? document.write(node[1].previousSibling.innerHTML);???? </script>
2019-11-20
1、node[1].previousSibling.innerHTML:這里獲得的是第一個<li></li>后面的空白符(nodeType=3,innerHTML=undefined),也即node[1]的上一個兄弟元素。
2、若想跳過空白文本:
function get_previousSibling(n){
var x=n.previousSibling;//首先取得n的上一個兄弟x
while(x&&x.nodeType!=1){//判斷x是否為元素節點(nodeType=1)
x=x.previousSibling;//若x不是元素節點則繼續循環獲取x的上一個兄弟元素,直到得到的是元素節點即停止循環,即可跳過空白文本節點。
}
return x;//最后返回獲取到的兄弟節點
}
//調用這個函數,即可獲取到上一個相鄰的兄弟元素節點
get_previousSibling(node);//有返回值,要定義一個變量獲取它的返回值并加以判斷即可。