读取XML文件的Javascript

读取XML文件的Javascript,javascript,xml,visual-studio-2010,Javascript,Xml,Visual Studio 2010,我正在为我的办公室开发一个基于网络的座位计划。下面是我制作的一些简单的XML,这样我就可以测试我的想法是否有效——如果桌面空闲,鼠标放在桌面上的图像将变为绿色,如果桌面被拍摄,图像将变为红色(我使用的图像是用焰火切割的,现在我的其他开发正在Visual Studio 2010中完成) <?xml version="1.0" encoding="utf-8" ?> <company> <employee id="1" email="Test1@hotmail.co

我正在为我的办公室开发一个基于网络的座位计划。下面是我制作的一些简单的XML,这样我就可以测试我的想法是否有效——如果桌面空闲,鼠标放在桌面上的图像将变为绿色,如果桌面被拍摄,图像将变为红色(我使用的图像是用焰火切割的,现在我的其他开发正在Visual Studio 2010中完成)

<?xml version="1.0" encoding="utf-8" ?>
<company>
  <employee id="1" email="Test1@hotmail.com" phone="1234">Test 1</employee>
  <employee id="2" email="Test2@hotmail.com" phone="6789">Test 2</employee>
  <employee id="" email="" phone="">Free Desk</employee>
</company>

测试1
测试2
免费办公桌
下面是我在Javascript中尝试的内容(注意,下面/上面有更多的代码用于读取xml等。这两个警报是我尝试的测试-如果在中进行了注释,我可以看到值1和2出现在网页上,因此我认为它可以很好地读取xml

    //alert(xmlObj.childNodes(0).getAttribute("id"))
    //alert(xmlObj.childNodes(1).getAttribute("id"))


    for (var i = 0; i < 4; i++) 
    {

        **if (xmlObj.childNodes(i).getAttribute("id") == 1)** 
        {

            stringData = stringData.replace("s1.gif", "s3.gif");

        }
        else 
        {

            stringData = stringData.replace("s1.gif", "s2.gif");
        }
    }
//警报(xmlObj.childNodes(0.getAttribute(“id”))
//警报(xmlObj.childNodes(1.getAttribute(“id”))
对于(变量i=0;i<4;i++)
{
**if(xmlObj.childNodes(i).getAttribute(“id”)==1)**
{
stringData=stringData.replace(“s1.gif”、“s3.gif”);
}
其他的
{
stringData=stringData.replace(“s1.gif”、“s2.gif”);
}
}

但是,当我运行时,我在粗体的行中得到了以下错误。Microsoft JScript运行时错误:“xmlObj.childNodes(…)”为null或不是对象。现在我认为它不喜欢使用I-我希望值1(即桌面1)会变成红色(s1.gif被s3.gif替换)对于其他数字,0号桌和2号桌将变为红色。有人知道我做错了什么吗?

您只为
公司
对象指定了3个子对象。您的
for
循环执行了
4次,从而超出了
公司
子节点
对象的边界


for
循环更改为
for(var i=0;i
,您将不会抛出任何异常。

为什么不使用jQuery,您的代码看起来更干净,也更容易执行。