我的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)
{
...
}
答案 0 :(得分:0)
第一段代码:
attributes
属性为评论节点(documentation)返回null
。 "对象需要"因为您尝试在空值上访问length
属性而发生错误。
第二段代码:
对于注释节点,childNodes
始终返回空节点列表。尝试访问空节点列表的第一项会返回null
,因此尝试访问length
属性时会出现同样的错误。
正如您所发现的,只是测试attributes
的返回值是有效的,因为null
的计算结果为false。但是,如果确实需要检查属性节点列表的长度,则可以执行以下操作:
if (childAttribute1 && childAttribute1.length != 0) { ... }