0

svg要素のHTMLコード:

<image xlink:href="start.gif" style="pointer-events:none" x="165" y="175" width="100" height="100" stroke-width="1" transform=" scale(1 1) translate(0 0)"/>

POCと同じように、

$('image').attr('xlink:href');

属性値をとして返しますstart.gif

すべての画像要素の属性値が必要になったので、関数を作成しました

function script()
{
    var result = new Array();
    var elements = selenium.browserbot.getCurrentWindow().jQuery('image');
    for(var i = 0 ; i < elements.length ; i++)
    {
        result[i] = $(this).attr('xlink:href');
    }
    return result;
}
script();

しかし、これはundefined

なぜそれが起こっているのですか?

そして、ええ、私はjQueryの$ .each(function(key、value))を使用しようとしましたが、seleniumは「エラー:例外をスローしました:c.callは関数ではありません」をスローします。cとcallが何を指しているのか理解できなかったので、jsforloopを使用することを考えました。

4

3 に答える 3

2

jQuery.eachを使用して試してみてください$(this)

var elements = selenium.browserbot.getCurrentWindow().jQuery('image');
elements.each(function(i) {
    result[i] = $(this).attr('xlink:href');
});
于 2012-07-26T11:50:29.203 に答える
1

なぜそれが起こっているのですか?それthisは、その関数の範囲内であるとあなたが思っている(またはそうなりたい)ものではないからです。正確なコンテキストを知らなくてもthis、ウィンドウ、別の要素、またはオブジェクトのインスタンスを指している可能性があります。

配列に保存されている画像のリストがあり、その配列のelementsインデックスに保存されている画像を含むjQueryオブジェクトを作成したいので、ではなくを使用します。i$(elements[i])$(this)

$.each()を使用する最初の試みが失敗した後、それを標準のJavascriptforループに変更しましthisたが、反復で現在の要素を参照するためにの(現在は正しくない)使用を残したことが起こったと思います。

于 2012-07-26T12:01:54.580 に答える
0

試す:

result[i] = $(elements[i]).attr('xlink:href');
于 2012-07-26T11:49:45.810 に答える