Chrome忽略空白文本节点

来源:9-11 访问兄弟节点

晓之蛇

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回答

  • 旺仔窝窝头
    2019-11-20 08:57:00
    已采纳

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


    旺仔窝窝头 回复晓之蛇

    谢谢采纳!

    2019-11-20 10:19:05

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题