- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经使用 javascript 工作了一个星期了。我目前正致力于通过节点使事情工作/改变。但我一直注意到一些奇怪的事情,对于一个不熟练的 javascripter 来说确实如此。
我的网站结构如下:
<html>
<head>
<title>....</title>
<link/>
<script></script>
</head>
<body>
<div 1>
<div 2></div>
</div>
</body>
</html>
当我试图找到具有下一个函数的子节点时:
var headerBox = document.body.childNodes;
var txt = "";
for (var x = 0; x < headerBox.length; x ++) {
txt =txt+"Childnode["+x+"]: "+headerBox[x].localName+" ("+headerBox[x].className+")<br>";
}
var x = document.getElementById(box);
x.innerHTML = txt;
我得到一个列表,其中包含几个未定义的“NULL”以及真实的 DIV
但是当我简单地将“document.body.childNodes”更改为“document.body.children”时,一切都完美无缺,“NULL”值甚至会改变。
我想知道的是“NULL”值在 HTML 文件中代表什么,因为“NULL”值所在的位置没有元素。在我的脑海中,它给了我一个不存在的、可见的东西的表示,但它是......
谁能给我解释一下这是怎么回事?
Ps:我很抱歉可能会重新发布这个,但我找不到关于这个问题的其他合适的问题!
Pss:发现了一个转发(What is the difference between children and childNodes in JavaScript?)。但它没有回答为什么它仍然将看不见的子节点识别为未定义。
最佳答案
childNodes
会为您提供各种节点,而 children
只会为您提供元素节点。您可以使用 nodeType
来检查当前节点是什么类型的节点:
document.body.childNodes[0].nodeType
这会给你一个整数:
1 ELEMENT_NODE
2 ATTRIBUTE_NODE
3 TEXT_NODE
4 CDATA_SECTION_NODE
5 ENTITY_REFERENCE_NODE
6 ENTITY_NODE
7 PROCESSING_INSTRUCTION_NODE
8 COMMENT_NODE
9 DOCUMENT_NODE
10 DOCUMENT_TYPE_NODE
11 DOCUMENT_FRAGMENT_NODE
12 NOTATION_NODE
如您所见,使用 childNodes
将为您提供一个列表,其中包含文本节点(即使它们填充有空格)、评论和各种其他节点类型,您可能不会不必担心太多。
关于javascript - javascript .childNodes 和 .children 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762027/
只有 JS,没有 Jquery。 如何获取容器的所有子节点,然后为每个子节点获取子节点? 我不想将 ID 添加到作为网格行子级的每个包装器,我尝试使用“this”或此索引进行定位。该脚本应该是动态的,
我有这个简单的html: text1 text2 text3
谁能解释为什么 ChildNodes.FindNode('') (1) 失败但 ChildNodes[''] (2) 成功? ==> 代码: const cNodeSOAPEnvelope =
我需要帮助来理解我成功使用的 dart 代码。 (详细信息:我用它来注入(inject)包含绑定(bind)到可变 CSS 类的 SVG 图形) 我可以在这里调用构造函数参数“注入(inject)依赖
现在,在 Angular 代码的子函数中的compileNodes函数中,有以下几行: } else if (childLinkFn) { childLinkFn(scope, node.chil
您好,我是编码新手,有一个通用问题,我到处查找但找不到解决方案。我正在学习 javascript 教程,并遇到了这一行特定的代码。子节点指出属性“backgroundColor”未定义,我不确定为什么
使用这个 HTML: 还有这个 JavaScript: var x = document.getElementById("child").childNodes; console.log(x.leng
First p element (index 1) Second p element (index 3) 试图理解为什么索引 0 是文本节点。 根据 w3schools 的这个例子,索引 0、2
场景 我想获取 div 的所有子节点并更改其颜色。代码: function myFunction() { var divv = document.getElementById("divv");
http://www.quirksmode.org/dom/domform.html 我正在尝试在我的项目中实现这个扩展表单功能。但是无法找到字段名称(控制台日志返回“未定义”),直到我将输入字段放在
// Some jQuery to load the HTML file $(function(){ $("#myDiv").load("./someHTMLfile.html"); }); va
我正在尝试使以下代码为每个子节点工作一次。该函数还按照逻辑删除节点,对于多个子节点,它似乎永远不会遍历到每个子节点。 //Deleting from child node va
下面的代码应该让我获得表中复选框旁边的列的值,但是,单击按钮后,我将得到: Cannot read property childNodes of null 注意:来自 firebase 的数据库,表中
我想在 JavaScript 中将 Element 的 childNode 转换为数组。 如何将 childNode 转换为数组?有什么好主意吗? 最佳答案 我用 _.toArray() 做到了这一点
我有以下代码,我正在尝试动态地从元素 supercontainer 中动态删除所有“容器”元素。由于 nodeList 处于事件状态,因此以下代码应删除 container1 以及 container
从下图中可以看出,childNodes 数组有 13 个项目。但显然“book”元素只有 6 个子节点。为什么这是不准确的? 最佳答案 因为 childNodes 返回所有子节点,包括文本节点(即使它
我正在做(强烈推荐)Javascript 教程 ( http://www.newthinktank.com/2015/09/learn-javascript-one-video/ ),其中一个解决方案
我现在正在学习 JavaScript,我正在编写函数来更改每个段落标记 和字体样式标记emphasis(em) 的样式和 bold(b) 位于 内 元素。这是我的程序。 Lorem ipsum d
我是 Ajax 新手。 我正在尝试解析 this document . 我已经了解了 readystatechange,它正在获取 XML。但是当涉及到子节点及其值时,我感到困惑。 这是一些代码。如果
给定一个像这样的简单结构: Text1 Text2 Text3 LinkText4 我正在尝试使用 Javascript 提取所有 Text1-4,不带任何子节点。 循环列 ... x = rows[
我是一名优秀的程序员,十分优秀!