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";

最初のスクリプトの TEXT GOES HERE を変数 mycars に置き換えることはできますか? どの配列が存在するかに応じて、グリースモンキーで操作したい動的に生成されたページがあるため、これを行っています。

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 に答える