IE中的语法错误? - ajax& JS

时间:2010-09-07 08:22:40

标签: php javascript ajax

我有这样的代码行:(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)
{...}
}

每次我使用这种语法都会出现“obejct required”错误,而在Firefox eveything还可以。 (......只是为了解释)

我尝试做这样的调试:

alert(processStatus.childNodes[0].nodeValue) 

,结果为0,所以var很好。 (也在ff工作过......)

xml:

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

另一件事是,对于i = 1,它可以,但是对于i = 2不是。

谢谢。

1 个答案:

答案 0 :(得分:1)

索引从0开始,所以如果你有三个项目,它们的相应索引是012,所以你需要循环:

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

而不是:

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

修改

您不需要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>