javascript - getElementsByTagName 是否返回所有子节点?

标签 javascript html xml dom

假设我们有以下 XML 结构:

<property>
    <label>Label 1</label>
    <value>value 1</label>
</property>
<property>
    <label>Label 2</label>
    <value>value 2</label>
</property>
<!-- more of these -->

假设我们已经正确地将 XML 文档加载到变量 var xml 中,xml.getElementsByTagName("property") 是否返回所有 propertylabelvalue 节点或只有 property 没有子节点的节点?

我问这个的原因是,我希望能够执行以下操作:

var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");

如果该函数不会返回任何 labelvalue 节点,那么最好的方法是什么?

最佳答案

getElementsByTagName方法“返回具有给定标签名称的所有后代元素NodeList”。所以 getElementsByTagName("property") 返回所有具有标签名称 property 的子节点、子节点的子节点等,无论此类节点的内容是什么。它当然不会返回任何具有不同标签名称的节点。

所以是的,代码

var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");

做你似乎想做的事:它将第一个 property 元素的 label 子元素的(实时)列表分配给 labels在文档中,前提是至少有一个 property 元素。 (因此,为了稳健性,您可能希望在继续执行第二个语句之前检查例如 props.length > 0。)

关于javascript - getElementsByTagName 是否返回所有子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820745/

相关文章:

python - 在 Python 中处理 `&#xA;`

xml - 使用 XML::Simple 时如何删除魔数(Magic Number)?

java - JaxB xjc 生成的 pojos 包含空白命名空间

asp.net - 使用 .Net 验证器在无效时将类添加到文本框

javascript - 标记在 JAMstack 中实际上意味着什么?

html - 悬停在另一个 div 上时 CSS 更改 div

html - 如何在 Perl 或 Ruby 中替换和增加 img 标签的尺寸?

javascript - 从 Javascript 数组加载下拉列表并使用 angularjs 设置选定值的最简单方法

javascript - 如何将 Canvas 图像 "data:image/jpeg;base64,.."转换为普通图像文件 - javascript

html - 我试着让三张图片并排 float ,宽度为 33%。为什么右边有多余的空间?