我有以下内容..
var result = doc.evaluate("//input[@class=\"form_field_as as-input\"]",
context,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
for(var i = 0; i < result.snapshotLength; i++) {
a[i] = result.snapshotItem(i);
}
return a;
我正在评估的表达式来自输入。代码在FireFox中工作正常,但是当我在Chrome上测试时,它不会返回任何内容。我做错了什么?
我正在评估的输入是..
<input type="text" id="sharees" class="form_field_as">
答案 0 :(得分:5)
来自http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator-evaluate
contextNode
类型Node
该context
是上下文节点 评估此XPath表达式。 如果XPathEvaluator是通过获得的 施放Document
然后必须这样做 由同一文件拥有并且必须 是Document
,Element
,Attribute
,Text
,CDATASection
,Comment
,ProcessingInstruction
或XPathNamespace
节点。如果是上下文 节点是Text
或CDATASection
, 然后将上下文解释为 整个逻辑文本节点如所见 XPath,除非节点为空 在哪种情况下,它可能不会作为 XPath上下文。
因此,您的context
必须是这些类的一些实例。我想你可能根本就没有设置这个变量。您也可以使用null
,上下文将成为您评估表达式的节点。
除此之外,请注意//input[@class='form_field_as as-input']
是一个绝对表达式,它将从任何上下文返回相同的结果(当通过强制转换“XPathEvaluator
时,不允许外部文档上下文Document
“)。