【问题标题】:Does getElementsByTagName return ALL child nodes?getElementsByTagName 是否返回所有子节点?
【发布时间】:2013-09-20 04:10:07
【问题描述】:

假设我们有以下 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 节点,那么最好的方法是什么?

【问题讨论】:

  • 也许您想使用xml.querySelectorAll("property label") 来检索属性对象内的所有标签对象。

标签: javascript html xml dom


【解决方案1】:

getElementsByTagName 方法“返回 NodeList of all descendant Elements with a given tag name”。所以getElementsByTagName("property") 返回所有的子节点、子节点的子节点等,标签名称为property,不管这样一个节点的内容是什么。它当然不会返回任何具有不同标签名称的节点。

是的,代码

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

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

【讨论】:

    【解决方案2】:

    试试这个,对你有帮助

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2020-04-24
      • 2021-03-11
      • 1970-01-01
      相关资源
      最近更新 更多