0

XML のループ処理に問題があります。要素をキャプチャしてjs変数として使用しようとしています。私の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>

私の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;

私がここでやろうとしていることを達成する別の方法はありますか?

4

1 に答える 1

1

このようなものはどうですか

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);
}
于 2011-08-15T05:30:44.087 に答える