检索动态加载元素的子项

时间:2012-03-15 13:47:51

标签: javascript xml dom

我有以下代码,它将输出“weather”元素的子元素。

x=xmlDoc.getElementsByTagName("weather")[0].childNodes;

    for (i=0;i<x.length;i++) {  
        var parent = x[i].nodeName;
        document.write("<b>"+parent+"</b><br />");

    }

这将获得以下孩子:

  

forecast_information,current_conditions,forecast_conditions,   forecast_conditions,forecast_conditions和forecast_conditions。

现在我想要检索这些元素的所有子元素。可能在循环内部有一个循环,这就是我尝试以下内容的原因:

for (i=0;i<x.length;i++) {  
    var parent = x[i].nodeName;
    document.write("<b>"+parent+"</b><br />");

    y=xmlDoc.getElementsByTagName(parent)[i].childNodes;

    for (h=0;h<y.length;h++) {
        var child = y[i].nodeName;
        document.write(child+"<br />");
    }
}

但这不起作用..它会得到输出:

  

forecast_information

     

城市(7次)

     

current_conditions

多数民众赞成......有什么帮助吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

不要再调用getElementsByTagName。只需在循环中的每个元素上使用childNodes来获取孩子的孩子:

var x = xmlDoc.getElementsByTagName("weather")[0].childNodes;
var xlen = x.length;

var i, j, y, ylen;
for (i = 0; i < xlen; i++) {  
    document.write("<b>" + x[i].nodeName + "</b><br />");

    y = x[i].childNodes;
    ylen = y.length;

    for(j = 0; j < ylen; j++) {
        document.write(y[j].nodeName + "<br />");
    }
}