3

ページ内からデータの配列を取得するために casper.evaluate() を使用しています。ただし、配列を返すのに失敗しているようです (文字列を返すことは問題なく機能します)。問題は何ですか?

明確にするために、評価のコードは次のとおりです。

function(){ 
    return $('#id a').map(function(i, e) { 
        return $(e).attr('href'); 
    }).get(); 
}

呼び出しの.get()最後の は、jQuery オブジェクトではなく配列を取得するためのものです。ところで、ページでjQueryが利用できると確信しています。

4

3 に答える 3

3

ここでは jQuery は必要ありません。

casper.evaluate(function() {
    return [].map.call(__utils__.findAll('#id a'), function(node) {
        return node.getAttribute('href');
    });
});
于 2013-02-20T23:33:12.483 に答える
0

.get()は不要だと思います。

.get()なしの戻り値は、確かに非常に優れた配列を形成します。このjsfiddleの例をご覧ください http://jsfiddle.net/YFsRw/

r = function(){ 
    return $('#id a').map(function(i, e) { 
        return $(e).attr('href'); 
    }); 
}

var p = r();

// p servers as a nice array :)
for (i = 0; i < p.length; i++) {
    document.write(p[i] + "<br/>");
}
于 2013-02-20T23:39:58.603 に答える
0

.toArray()はあなたが探しているものです。

.toArray() [戻り値: 配列]

説明: jQuery セットに含まれるすべての要素を配列として取得します。

function(){ 
    return $('#id a').map(function(i, e) { 
        return $(e).attr('href'); 
    }).toArray(); 
}

またはjQuery 要素セット$.makeArray()以上の幅広いレベルで機能し、静的な方法で呼び出される もあります。

function(){ 
    return $.makeArray(
        $('#id a').map(function(i, e) { 
            return $(e).attr('href'); 
        })
    ); 
}

(しかし.toArray()、この場合はより適切で明確に見えます。)


2つの比較については、このSOの回答を参照してください。

于 2015-03-13T07:28:37.267 に答える