XSLT中的JScript运行时错误:需要对象

时间:2016-10-06 16:39:49

标签: xslt runtime-error jscript

我的XSLT中有以下JScript代码:

    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'子句

上遇到运行时错误'Object required'

请告诉我上面的代码中有什么问题

编辑:

我正在使用MSXML处理器

而且,如果我使用的话,我可以让它工作:

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

1 个答案:

答案 0 :(得分:0)

第一段代码:

attributes属性为评论节点(documentation)返回null。 "对象需要"因为您尝试在空值上访问length属性而发生错误。

第二段代码:

对于注释节点,childNodes始终返回空节点列表。尝试访问空节点列表的第一项会返回null,因此尝试访问length属性时会出现同样的错误。

正如您所发现的,只是测试attributes的返回值是有效的,因为null的计算结果为false。但是,如果确实需要检查属性节点列表的长度,则可以执行以下操作:

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