繁体   English   中英

getElementsByTagName是否返回所有子节点?

[英]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 propertylabelvalue节点或仅返回没有子节点的property节点?

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

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

如果该函数将不返回任何labelvalue节点,那么完成此操作的最佳方法是什么?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM