晓之蛇
2019-11-04 17:03
实在搞不懂如何通过代码实现跳过空白文本节点
举了个简单的例子,下面代码如何通过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、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);//有返回值,要定义一个变量获取它的返回值并加以判断即可。
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题