2012-03-15 30 views
0

我有以下代码,它将输出“天气”元素的子元素。检索动态加载元素的孩子

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

那所有..任何帮助?

在此先感谢!

回答

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 />"); 
    } 
} 
+0

啊谢谢,它的工作! – dimitri010 2012-03-15 14:22:44

+0

@ dimitri010不客气:)不要忘记声明所有变量,以免它们变成全局变量。 – Paulpro 2012-03-15 14:40:26