我需要一点这个脚本的帮助:
var xpathResult = document.evaluate("(//text()[contains(., 'TEXT GOES HERE')])[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
var node=xpathResult.singleNodeValue;
if (node==null)
我也有这样的字符串列表:
var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";
我可以在第一个脚本中用变量mycars替换TEXT GOES吗?我这样做是因为我有一个动态生成的页面,我想用greasemonkey来操作,具体取决于哪个数组存在。
答案 0 :(得分:1)
这个问题有点不清楚,但总的来说,你会使用for()
循环。像这样:
var foundSomething = false;
for (var J in mycars) {
var xpathResult = document.evaluate (
"(//text()[contains(., '" + mycars[J] + "')])[1]",
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
);
var node = xpathResult.singleNodeValue;
if (node) {
foundSomething = true;
// DO WHATEVER WITH THE FOUND NODE HERE.
// break; // Un-comment this statement to stop on the first match.
}
}
答案 1 :(得分:0)
您必须修改包含XPath表达式的字符串,以在xpath中表达您的要求。因此,在您的示例中,您必须创建一个字符串,其中多个条件由or
分隔,或者您可以使用|
分隔多个XPath表达式。请参阅以下示例:
(//text()[contains(., 'Saab') or contains(., 'Volvo') or contains(., 'BMW')])[1]
(//text()[contains(., 'Saab')]|//text()[contains(., 'Volvo')]|//text()[contains(., 'BMW')])[1]