JavaScript для чтения XML-файла - PullRequest
1 голос
/ 27 октября 2011

Я разрабатываю план рассадки в интернете для своего офиса. Ниже приведен простой XML-код, который я разработал, чтобы я смог проверить, работает ли моя идея - при наведении мыши на изображение рабочего стола оно станет зеленым, если стол свободен, и красным, если стол занят (изображение, которое я использовал, было нарезано с помощью Fireworks и теперь моя разработка выполняется в 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>

Итак, вот что я пробовал в своем 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");
        }
    }

Однако при запуске я получаю следующую ошибку в строке, выделенной жирным шрифтом. Ошибка выполнения Microsoft JScript: «xmlObj.childNodes (...)» является нулевым или не является объектом. Теперь я думаю, что это не нравится использование i - я надеялся, что для значения 1 (то есть - desk 1 оно станет красным (s1.gif заменяется на s3.gif), а для других номеров desk 0 и desk 2 он бы покраснел. Есть ли у кого-нибудь идеи о том, что я делаю неправильно?

1 Ответ

2 голосов
/ 27 октября 2011

Вы указали только 3 дочерних элемента для объекта company.Ваш цикл for выполняется 4 раза, таким образом выходя за границы childNodes объекта в company.

Измените цикл for на for (var i = 0; i < xmlObj.childNodes.length; i++), и у вас не будет никаких исключенийвыброшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...