2012-02-09 48 views
2

我有代碼<a href="javascript:someFunction(this);" tabindex="0">Some text</a>傳入javascript函數這個參數HREF

是否有可能元件傳遞到someFunction(link) {...}以後使用它。

在調試模式下,我看到的對象,但所有的屬性是undefined

當我使用onClick屬性,如<a onClick="javascript:someFunction(this);它工作正常。

我知道這可能不是最好的解決方案,我已經看到了其他問題,但現在真的不是我的問題。我只是需要這樣做,原因很多。

非常感謝

+0

你試過嗎?繼續嘗試,看看它是否有效。它看起來對我是正確的。 – 2012-02-09 16:44:15

+1

不要做內聯的JavaScript!沒有任何藉口,只是不這樣做。 – Mathletics 2012-02-09 16:44:39

+3

'onclick'有一個'this'參數,因爲它觸發了一個事件。 'href'沒有。 – Blender 2012-02-09 16:44:43

回答

2

如果你不介意使用jQuery(如果你不能無視這個答案),您可以將事件附加到您的鏈接:

$('#id_of_your_link').on('click', function(event) { 
    event.preventDefault(); 
    someFunction(this); 
}); 

該代碼同時適用於鍵盤導航和鼠標點擊: http://jsbin.com/ufapor。你可以在這裏看到源代碼:http://jsbin.com/ufapor/edit#javascript,html

+0

它似乎是他的答案,我不知道我可以這樣做http://jsbin.com/ufapor/4/edit#javascript,html非常有幫助。 – eomeroff 2012-02-09 17:09:13

2

好的......我看到這裏發生了什麼。問題是,當你觸發一個onclick事件時,會涉及到一個元素。因此你可以通過this並在函數中引用它。但是,當您使用href時,您將當前位置設置爲href中的任何位置。這與在地址欄中輸入它並按回車鍵相同。因此,如果您傳遞該函數this,它實際上是指DOMWindow對象。我可以看到的唯一方法是將節點的id作爲純文本傳遞給函數。然後用getElementById抓住它。

我強烈建議重新考慮你是如何做到這一點。

+0

謝謝我這個我找到了解決方案。 – eomeroff 2012-02-09 17:10:06