假设我们有以下 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")
是否返回所有 property
、label
、value
节点或只有 property
没有子节点的节点?
我问这个的原因是,我希望能够执行以下操作:
var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");
如果该函数不会返回任何 label
或 value
节点,那么最好的方法是什么?
最佳答案
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/