首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >obj.nextElementSibling || obj.nextSibling

obj.nextElementSibling || obj.nextSibling
EN

Stack Overflow用户
提问于 2017-03-24 17:07:24
回答 1查看 90关注 0票数 1

下面是测试代码:

代码语言:javascript
复制
<body>
    <div id="abc">1</div>
    <div>2</div>

    <script>
        var id = document.getElementById("abc");
        var div = id.nextElementSibling || id.nextSibling;
        // change order 
        var div1 = id.nextSibling || id.nextElementSibling;

        alert(div.textContent)   // alert: 2
        alert(div1.textContent)  // alert nothing
    </script>
</body>

此代码在chrome brower上运行,第一个2 ()弹出警报,但第二个alert()没有弹出任何内容。为什么?

EN

回答 1

Stack Overflow用户

发布于 2017-03-24 17:10:46

尝试:

代码语言:javascript
复制
    <div id="abc">1</div><div>2</div> //2, 2
    <div id="abc">1</div>x<div>2</div> //2, x

问题是,使用or时,只计算条件的第一部分(当为true时)。因此,您的第二个调用返回字符串(空格)-请参阅下面的nextSibling方法描述。

还可以尝试此更改:

代码语言:javascript
复制
alert('"' + div1.textContent + '"') // the second call will return "   " (with also line break inside)

https://www.w3schools.com/jsref/prop_node_nextsibling.asp

此属性与nextElementSibling的区别在于,nextSibling将下一个同级节点作为元素节点、文本节点或注释节点返回,而nextElementSibling将下一个同级节点作为元素节点返回(忽略文本和注释节点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42995338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档