【问题标题】:Using setAttribute() on object from XPathEvaluator对来自 XPathEvaluator 的对象使用 setAttribute()
【发布时间】:2012-08-07 19:35:38
【问题描述】:

我在 XPathEvaluator() 对象上使用 evaluate() 函数时遇到了一些麻烦。 我的代码如下:

var evaluator = new XPathEvaluator();
var result = evaluator.evaluate("//div[@id='header']/div[4]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
result.setAttribute("style", "background: red; outline: blue solid thick;");

evaluate() 不返回可被setAttribute() 函数使用的对象。 我读了https://developer.mozilla.org/en-US/docs/Using_XPath。 如何获取可以使用的正确对象setAttribute()

【问题讨论】:

    标签: javascript css firefox xpath


    【解决方案1】:

    您可以在元素节点上使用setAttributeevaluate 方法不返回元素节点或节点列表,而是为您提供 XPathResult 对象。所以你想要

    var div = document.evaluate("//div[@id='header']/div[4]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    if (div !== null) {
      div.setAttribute("attribute-name", "attribute-value");
    }
    

    【讨论】:

    • 当我输入:try{ var result = evaluator.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; } catch(err){ alert("ERROR!\n" + err.message); } 我得到:evaluator.evaluate 不是函数
    • 好吧,我会简单地使用暴露在 DOM 文档对象上的 evaluate 方法,如我的帖子中所示。我还准备了jsfiddle.net/J5LRh,它适用于 Firefox、Opera、Chrome。所以我对evaluate(...).singleNodeValue 的建议很好,据我所知。至于使用setAttribute,我更喜欢使用 DOM 属性,例如element.align = 'right'element.style.backgroundColor = 'red',但使用 Firefox setAttribute 也应该这样做(一旦您的代码选择了一个元素节点)。
    猜你喜欢
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2011-10-29
    • 2016-08-02
    • 2023-03-15
    • 2017-11-02
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多