Ошибка выполнения JScript в XSLT: требуется объект

У меня есть следующие части кода JScript в моем XSLT:

    var childAttribute1 = ppDemo1[i].firstChild.attributes;
    if(childAttribute1.length != 0)    
    {
        ....
    }

    var childAttribute2 = ppDemo1[i].childNodes.item(0);
    if(childAttribute2.nodeType != 8)
    {
        ....
    }

ppDemo1 указывает на прокомментированный узел / текст в XML

Я пытаюсь достичь того же самого, т. е. не входить в цикл if, если текущий узел является комментарием (и не имеет атрибутов)

Моя проблема: я всегда получаю ошибку времени выполнения «объект требуется» в обоих предложениях «if»

Пожалуйста, скажите мне, что не так в приведенных выше фрагментах кода

Отредактированный:

Я использую процессор MSXML

И я могу заставить его работать, если я использую:

    if(ppDemo1[i].attributes)  
    {  
      ...
    }

1 ответ

  1. Первый фрагмент кода:

    attributesСвойство возвращает nullузлы комментариев (documentation). Ошибка «требуется объект» возникает при попытке получить доступ к lengthсвойству со значением null.

    Второй фрагмент кода:

    Для узла комментариев childNodesвсегда возвращает пустой список узлов. Попытка получить доступ к первому элементу пустого списка узлов возвращаетnull, таким образом, вы получаете ту же ошибку, пытаясь получить доступ к lengthсвойству.

    Как вы обнаружили, просто проверить возвращаемое значение attributesработ, так nullкак оценивает в false. Если вам действительно нужно проверить длину списка узлов атрибутов, вы можете сделать это:

    if (childAttribute1 && childAttribute1.length != 0) { ... }