2011-08-15 24 views
0

ちょっとした人よ、XMLをループするのに問題があります。私は要素をキャプチャしてjs変数として使用しようとしています。私のXMLはです。XMLループで配列内の要素が多すぎる

<box> 
<thing> 
      <id>5</id> 
      <numbers> 
       <number>4</number> 
       <number>6</number> 
      </numbers> 
</thing> 
<thing> 
      <id>2</id> 
      <numbers> 
       <number>8</number> 
       <number>5</number> 
       <number>9</number>    
      </numbers> 
</thing> 
<thing> 
      <id>88</id> 
      <numbers> 
       <number>78</number> 
      </numbers> 
</thing> 
</box> 

My JS。

ajax(site, params) 

var things = xmlDoc.getElementsByTagName("thing"); 

for (i=0; i<things.length; i++){ 
    var id = things[i].getElementsByTagName("id")[0].firstChild.nodeValue; 
    var numbers = things[i].getElementsByTagName("numbers"); 
    var value; 
    for (n=0; n<numbers.length; n++){ 
     var number = numbers[n].getElementsByTagName("number"); 
     value = value + number; 
    } 

    id = value; 
} 

私がいる問題は、私は要素をつかむときに、ページ全体からすべての要素をつかむように見えるということです。

そして、私はここでやろうとしています何を達成するための別の方法があり、私は

id #1 = 110; 
id #2 = 100; 
id #3 = 78; 

で終わるので、評価に追加しますか?

+0

のようなものについては、各ループの最後に?値を表示またはログするコードはどこにありますか? – Phil

+0

申し訳ありませんフィル私の悪いことは、それは印刷の種類の文章を意味した問題ではないです。遅いです!! – Christopher

答えて

1

どのように、なぜあなたが加算された「数字」と `id`変数を上書きしている。この

for (var i = 0; i < things.length; i++) { 
    var thing = things[i]; 
    var id = thing.getElementsByTagName('id')[0].firstChild.nodeValue; 
    var numbers = thing.getElementsByTagName('number'); 
    for (var j = 0, value = 0; j < numbers.length; j++) { 
     value += numbers[j].firstChild.nodeValue; 
    } 
    console.log(id, value); 
} 
関連する問題