javascript - 在Javascript中遍历DOM(nodeType)

标签 javascript html dom

我开始探索如何使用 Javascript 操作 DOM。 我从非常基础的开始,但我立即陷入困境。

所以从W3我发现HTML中有3种类型的节点:

  1. 元素
  2. 属性
  3. 文字

以此片段为例<p id="myId">My paragraph</p>我想说:

  1. <p>
  2. ID
  3. 我的段落

但是当我在代码中应用这个概念时,它不起作用。 这是我的例子:

<! DOCTYPE html>
<html>
<head></head>
<body>    
    <script>

        var htmlElement = document.documentElement;
        var headElement = htmlElement.firstChild
        var bodyElement = headElement.nextSibling;

        alert (bodyElement.nodeType);

    </script>
</body>

正如您从我的变量名称中可以想象的那样,我希望警报结果为“1”(它将是元素“body”),但我收到的是文本“3”。但我的“head”元素中没有任何文本。

我该如何解释这一点?

最佳答案

JavaScript 也关心换行符 (\n),因此当您使用 nextSibling 时,它也会获得换行符。

因此,使用以下代码:

headElement.nextSibling

现在会产生\n来获取body元素,您需要再次使用nextSibling:

headElement.nextSibling.nextSibling

或者,您可以使用nextElementSibling通过它,您可以获得 element 类型的下一个同级:

headElement.nextElementSibling

关于javascript - 在Javascript中遍历DOM(nodeType),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408542/

相关文章:

javascript - 如何计算4个点的加权中心点?

javascript - Node.js 和 socket.io 数千次不成功的连接尝试

javascript - 尝试使用 filter() 从节点获取文本,但返回一个对象?

javascript - 如何组合元素变换?

javascript - 为什么此代码在使用表单标签时会导致错误?

javascript - 使用 jQuery 将 HTML 字符串转换为 DOM 对象

java - 解析 DOM - org.xml.sax.SAXParseException

javascript - Angularjs - 使用指令来实例化其他指令?

javascript - 如何使用 PHP 将数据保存在我的数据库中

javascript 根据元素的高度改变高度