javascript - previousSibling 和 nextSibling 返回文本?

标签 javascript html dom

有人可以澄清为什么下面的代码返回#text 而不是'li' ?

第一个 li 的下一个 sibling 不应该是 li 吗? 同样,最后一个 li 的前一个兄弟是 li ?

<body>
  <ul>
    <!-- comment -->
    <li id="A"></li>
    <li id="B"></li>
    <!-- comment -->
  </ul>

  <script>
    //cache selection of the ul
    var ul = document.querySelector('ul');

     //What is the nextSibling of the first li?
    console.log(ul.querySelector('#A').nextSibling.nodeName); //logs text

     //What is the previousSibling of the last li?
    console.log(ul.querySelector('#B').previousSibling.nodeName); //logs text
  </script>
</body>

最佳答案

两者之间的空白也是一个节点。这就是 JS 库存在的原因。为您提供检索元素 sibling 等选项。

如果 HTML 源代码如下所示:

<ul>
<li id="A"></li><li id="B"></li>
</ul>

它会如您所愿地工作,因为 li 元素之间没有空格。

最近,又引入了两个属性,称为 previousElementSiblingnextElementSibling,它们会忽略该空格。它适用于 IE9 及更高版本,其他主要浏览器现在也支持它一段时间。

关于javascript - previousSibling 和 nextSibling 返回文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30001482/

相关文章:

javascript - 是任何 float | 0 = 固定数?

javascript - 使用 angularJS .component() 但没有得到任何值

html - 水平居中 DIV 并与顶部或底部保持固定距离,在窗口中不滚动

html - Angular 淡入淡出动画不起作用

javascript - 在 DOM 字符串中使用变量

javascript - Ajax 调用 API 返回错误 HTTP/1.1 405 Method Not Allowed

javascript - 使用 CSS 和 JS 动态设置 div 尺寸时,如何补偿较长的加载时间?

javascript - 无法让 ajax 显示在页面中,但可以在谷歌元素检查器中看到

javascript - Ghost.py 0.2.3 超时错误 : Unable to load requested page

javascript - jquery中toArray和makeArray的区别