2

我需要这个脚本的一些帮助:

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 HERE 吗?我这样做是因为我有一个动态生成的页面,我想根据存在的数组使用greasemonkey 对其进行操作。

4

2 回答 2

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.
    }
}
于 2013-01-03T19:27:20.410 回答
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]
于 2013-01-03T17:51:42.140 回答