[英]Does getElementsByTagName return ALL child nodes?
假设我们具有以下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")
返回ALL property
, label
, value
节点或仅返回没有子节点的property
节点?
我问这个的原因是,我希望能够执行以下操作:
var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");
如果该函数将不返回任何label
或value
节点,那么完成此操作的最佳方法是什么?
getElementsByTagName
方法“返回具有给定标签名称的所有后代 Elements
NodeList
”。 因此,不管此类节点的内容如何, getElementsByTagName("property")
返回所有具有标签名称property
子代,子代子代等。 当然,它不会返回任何具有不同标签名称的节点。
是的,代码
var props = xml.getElementsByTagName("property");
var labels = props[0].getElementsByTagName("label");
做你似乎什么想做的事:把它分配给labels
的(现场)列表label
的第一个子女property
的文件中元素,前提是至少有一个property
元素。 (因此,出于鲁棒性,您可能希望在继续第二条语句之前检查props.length > 0
。)
试试这个,这对您有帮助
var props = xml.getElementsByTagName("property");
var eleChild = props .childNodes;
for( i = 0 , j = eleChild.length; i < j ; i++ ){
if( eleChild[ i ].className == "autodropdown" ){
YOUr_SCRIPT
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.