javascript 检查子 Node 是元素还是文本 Node

标签 javascript node.js

我对 childNodes 有如下问题:

 <ol>
    <li>Coffee</li>
    <li>Tea</li>
    <li>Coca Cola</li>
 </ol>
 //childNodes.length = 7

但是

<ol><li> Coffee </li><li> Tea </li><li> Coca Cola </li></ol>
//childNodes.length = 3

似乎每个 \ntextnode 都被认为是一个 child ,我如何从 childNodes 中删除这些?

最佳答案

您可以使用 nodeType 检查给定的子 Node 是否为文本 Node 。文本 Node 的 nodeType3。我们可以使用号码或 the constant Node.TEXT_NODE检查。

window.onload = function() {
  var el = document.getElementsByTagName('ol')[0].childNodes; // using [0] as there is only one ol in the demo
  console.log('Print with text nodes');
  for (var i = 0; i < el.length; i++) { // will output all nodes with "undefined" for text nodes
    console.log(el[i].innerHTML);
  }
  console.log('Print without text nodes');
  for (var i = 0; i < el.length; i++) { // will output only non text nodes.
    if (el[i].nodeType != Node.TEXT_NODE) // or if (el[i].nodeType != 3)
      console.log(el[i].innerHTML);
  }
}
<ol>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Coca Cola</li>
</ol>

关于javascript 检查子 Node 是元素还是文本 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971177/

相关文章:

javascript - 用于匹配用户名的正则表达式 : min 3 chars, 最多 20 个字符,字符之间可选下划线

node.js - WS 和 socket.io 有什么关系?

node.js - 通过 node.js 的 npm 安装 gulp 会破坏窗口

Javascript 添加迄今为止的天数、周数或月数

javascript - 使用 JavaScript 比较两个 json 文件 ID 值作为比较因素并显示相应的匹配项

javascript - 来自 codepen 的 JS 在除 codepen 之外的任何地方都不起作用

javascript - 如何在 NestJS 过滤器中使用 @Catch() 接口(interface)

java - AES-256-CTR node JS加密,Java解密

java - 如何使用 javascript 或 java 使用打印命令打印 JSP 页面中包含的表格?

javascript - 通过 JavaScript 设置 SelectBox 值