неправильный синтаксис в IE? - Ajax & Js - PullRequest
1 голос
/ 07 сентября 2010

у меня есть строка кода, подобная этой: (JS)

numOfprocess = parseInt(xmlDoc.getElementsByTagName('process_count')[0].childNodes[0].nodeValue)
for (i = 1; i <= numOfProcess; i++)
{
processStatus = xmlDoc.getElementsByTagName('proccess' + i)[0];
if(processStatus.childNodes[0].nodeValue == false)
{...}
}

каждый раз, когда я использую этот синтаксис, возникает ошибка «требуется объект», в то время как в Firefox все в порядке.(... просто для объяснения)

Я попытался отладить что-то вроде этого:

alert(processStatus.childNodes[0].nodeValue) 

, и результат был 0, поэтому переменная в порядке.(также работал в ff, так что ..)

xml:

         <process_count>2</process_count>
         <Application_Status>
                        <proccess2>1</proccess2>
         </Application_Status>

Другое дело, что для i = 1 это нормально, но для i = 2 нет.

Спасибо.

1 Ответ

1 голос
/ 07 сентября 2010

Индексирование начинается с 0, поэтому, если у вас есть три элемента, их соответствующие индексы будут 0, 1 и 2, поэтому вам нужно выполнить цикл:

for (i = 1; i <  numOfProcess; i++)

вместо:

for (i = 0; i <= numOfProcess; i++)

EDIT:

Вам не нужен цикл for для доступа к вашим данным, вы можете легко получить доступ к требуемому значению с помощью:

var processId = xmlDoc.getElementsByTagName('process_count')[0].childNodes[0].nodeValue;
var processStatus = xmlDoc.getElementsByTagName('process'+processId)[0].childNodes[0].nodeValue;

Но я предлагаю пересмотреть вашу XML-схему, поскольку вам нужно не более одного статуса процесса, почему бы не сделать простую вещь, такую ​​как:

<application>
    <process id="2" status="1" />
</application>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...