【问题标题】:JScript runtime error in XSLT: Object requiredXSLT 中的 JScript 运行时错误:需要对象
【发布时间】:2016-10-06 16:39:49
【问题描述】:

我的 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”子句中收到运行时错误“需要对象”

你能告诉我上面的代码有什么问题吗

已编辑:

我正在使用 MSXML 处理器

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

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

【问题讨论】:

  • 考虑发布最少但完整的示例,以便其他人重现该问题。由于使用 JScript 和公开的 API 取决于所使用的 XSLT 处理器,因此您还需要准确地告诉我们您正在使用哪个 XSLT 处理器。
  • 对不起,我之前错过了。我正在使用 MSXML。我也更新了帖子

标签: xslt runtime-error jscript


【解决方案1】:

第一段代码:

attributes 属性为评论节点 (documentation) 返回 null。出现“需要对象”错误是因为您试图访问空值的 length 属性。

第二段代码:

对于评论节点,childNodes 总是返回一个空节点列表。尝试访问空节点列表的第一项将返回 null,因此您在尝试访问 length 属性时会遇到相同的错误。

正如您所发现的,只需测试 attributes 的返回值即可,因为 null 的计算结果为 false。但是,如果您确实需要检查属性节点列表的长度,您可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多