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 回答