Chrome忽略空白文本節(jié)點(diǎn)
實(shí)在搞不懂如何通過代碼實(shí)現(xiàn)跳過空白文本節(jié)點(diǎn)
舉了個(gè)簡單的例子,下面代碼如何通過previousSibling拿到【Hello】?這么執(zhí)行后拿到的是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:這里獲得的是第一個(gè)<li></li>后面的空白符(nodeType=3,innerHTML=undefined),也即node[1]的上一個(gè)兄弟元素。
2、若想跳過空白文本:
function get_previousSibling(n){
var x=n.previousSibling;//首先取得n的上一個(gè)兄弟x
while(x&&x.nodeType!=1){//判斷x是否為元素節(jié)點(diǎn)(nodeType=1)
x=x.previousSibling;//若x不是元素節(jié)點(diǎn)則繼續(xù)循環(huán)獲取x的上一個(gè)兄弟元素,直到得到的是元素節(jié)點(diǎn)即停止循環(huán),即可跳過空白文本節(jié)點(diǎn)。
}
return x;//最后返回獲取到的兄弟節(jié)點(diǎn)
}
//調(diào)用這個(gè)函數(shù),即可獲取到上一個(gè)相鄰的兄弟元素節(jié)點(diǎn)
get_previousSibling(node);//有返回值,要定義一個(gè)變量獲取它的返回值并加以判斷即可。