2011-08-15 3 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); 
}