为了账号安全,请及时绑定邮箱和手机立即绑定

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>


正在回答

1 回答

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);//有返回值,要定义一个变量获取它的返回值并加以判断即可。


1 回复 有任何疑惑可以回复我~
#1

晓之蛇 提问者

解释的很清楚,感谢!
2019-11-20 回复 有任何疑惑可以回复我~
#2

旺仔窝窝头 回复 晓之蛇 提问者

谢谢采纳!
2019-11-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Chrome忽略空白文本节点

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信