2012-08-07 33 views
0

对于XPathEvaluator()对象,使用evaluate()函数我有一些麻烦。 我的代码如下所示:在XPathEvaluator的对象上使用setAttribute()

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()

回答

0

您可以在元素节点上使用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"); 
} 
+0

当我键入: '尝试{ \t \t \t \t \t VAR的结果= evaluator.evaluate(XPath中,文档,空,XPathResult.FIRST_ORDERED_NODE_TYPE,NULL).singleNodeValue; \t \t \t \t} \t \t \t \t赶上(ERR){ \t \t \t \t \t警报( “错误。\ n!” + err.message); \t \t \t \t}' 我得到:* evaluator.evaluate不是函数* – werasquez 2012-08-07 12:47:24

+0

好吧,我会简单地用'暴露在DOM文档对象evaluate'方法,在我的帖子中。我也准备了http://jsfiddle.net/J5LRh/,适用于Firefox,Opera,Chrome。所以我对'评估(...)。singleNodeValue'的建议很好,据我所知。至于使用'setAttribute',我更喜欢使用DOM属性,例如'element.align ='right''或'element.style.backgroundColor ='red'',但用Firefox'setAttribute'也应该做到这一点(一旦你的代码选择了一个元素节点)。 – 2012-08-08 09:27:13