2012-02-09 88 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