2012-07-26 49 views
0

HTML代碼:jQuery的 - 屬性值未定義的SVG元素的

<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)),但硒會拋出「錯誤:拋出異常:c.call不是函數」。不明白c和call是指什麼,所以認爲使用js for循環。

回答

0

嘗試:

result[i] = $(elements[i]).attr('xlink:href'); 
+0

謝謝!一如往常,解決的問題看起來很愚蠢!也許我應該刪除這個問題? – aradhak 2012-07-26 12:08:27

2

使用jQuery .each並嘗試與$(this)

var elements = selenium.browserbot.getCurrentWindow().jQuery('image'); 
elements.each(function(i) { 
    result[i] = $(this).attr('xlink:href'); 
}); 
+0

+1爲你的答案 – 2012-07-26 11:59:13

+0

它給出同樣的錯誤。 – aradhak 2012-07-26 12:20:20

1

這是爲什麼發生?因爲this不是您認爲它(或想要它)在該函數的範圍內。不知道確切的上下文,this可能指向窗口,或另一個元素,或對象的一個​​實例。

已存儲在您的elements陣列圖像的列表,並希望創建一個包含存儲在該數組的索引i像一個jQuery對象,所以使用$(elements[i])而非$(this)

我希望發生的事情是,你的初始後使用$.each()失敗的嘗試,你修改了它的標準JavaScript for環,但離開了(現在是不正確的)使用的this指當前元素的迭代。

+0

是的,我現在明白了。感謝您的解釋。 – aradhak 2012-07-26 12:13:31