<a href="javascript:foo(this)"> passes Window, I want the tag element itself</a>

时间:2012-02-16 19:19:31

标签: javascript html

我希望打印“a”,因为当我调用foo(this)时,参数似乎是链接标记。

<script type="text/javascript">
    function foo (e) {
        alert (e .tagName);
    }
</script>
<a href="javascript:foo(this)">click</a>

相反,它打印“未定义”。如果我alert(e)它说“对象窗口”。如何让foo知道哪个元素启动了它?没有通过/查找ID。

4 个答案:

答案 0 :(得分:33)

您不应该将href用于JavaScript。不好的做法,而是使用onclick和this会神奇地指向链接。

<a href="#" onclick="foo(this)">click</a>

您还需要取消链接的点击操作。返回false或使用preventDefault取消事件。

最好使用Unobtrusive JavaScript

附加活动

答案 1 :(得分:5)

你也可以直接这样做

<a href="#" onclick="alert(this.tagName);">click</a>​

答案 2 :(得分:0)

<a href="#" onclick="foo(this)">click</a>

function foo(obj) {
    alert(obj.tagName);
}​

不要调用元素e它是事件对象的标准。

JSfiddle DEMO

答案 3 :(得分:0)

this对象在所有浏览器中的处理方式都不相同。这是像Prototype和jQuery这样的库试图规范化的众多项目之一。尽管如此,大多数浏览器会在this句柄(而不是onclick)期间传递适当的href,正如许多其他答案所指出的那样。如果您想恰当地处理this,则需要执行this question中详述的内容。