Нужна помощь в цикле через XML-файл с JavaScript - PullRequest
0 голосов
/ 12 мая 2011

Я впервые работаю с ajax любым способом, поэтому, пожалуйста, потерпите меня.

В моей программе есть выпадающие списки, которые будут динамически извлекать почтовые индексы, графства и города в зависимости от штата, в котором они находятся.выбран.Пока графства работают правильно, но почтовые индексы и города показывают только первую запись на моем листе xml.

XML выглядит примерно так:

<states>
   <counties>
     <county>
       <countyid>id#1</countyid>
       <countyname>nassau</countyname>
     </county>
   </counties>
   <zipcodes>
     <zip>10109</zip>
   </zipcodes>
   <cities>
     <city>New York</city>
   <cities>
</states>

Теперьjavascript, который проходит через секцию округов, выглядит следующим образом:

target1.options[0] = new Option("Select County", "null");
for (var i = 0; i < xmlCounties.length; i++) {
target1.options[target1.options.length] = new Option(xmlCounties[i].childNodes[1].firstChild.nodeValue, xmlCounties[i].childNodes[0].firstChild.nodeValue, false, (matched == xmlCounties[i].childNodes[0].firstChild.nodeValue));

}

Это прекрасно работает, но для городов и почтовых индексов это не так, и оба выглядят так иидентичны приведенному выше примеру:

target2.options[0] = new Option("Select Zipcode", "null");
for (var i = 0; i < xmlZips.length; i++) {target2.options[target2.options.length] = new Option(xmlZips[i].childNodes[0].firstChild.nodeValue, xmlZips[i].childNodes[0].firstChild.nodeValue, false, (matched == xmlZips[i].childNodes[0].firstChild.nodeValue));
}

Они оба извлекают данные из xml, но только из первой записи.Любые идеи о том, как это исправить?Спасибо!

1 Ответ

0 голосов
/ 12 мая 2011

графство имеет 2 уровня глубины. Почтовый индекс и город имеют только один уровень глубины.Вот в чем причина.Попробуйте это

target2.options[0] = new Option("Select Zipcode", "null");
for (var i = 0; i < xmlZips.length; i++) {target2.options[target2.options.length] = new Option(xmlZips[i].childNodes[0].nodeValue, xmlZips[i].childNodes[0].nodeValue, false, (matched == xmlZips[i].childNodes[0].nodeValue));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...