我希望打印“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。
答案 0 :(得分:33)
您不应该将href用于JavaScript。不好的做法,而是使用onclick和this
会神奇地指向链接。
<a href="#" onclick="foo(this)">click</a>
您还需要取消链接的点击操作。返回false或使用preventDefault取消事件。
附加活动答案 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
它是事件对象的标准。
答案 3 :(得分:0)
this
对象在所有浏览器中的处理方式都不相同。这是像Prototype和jQuery这样的库试图规范化的众多项目之一。尽管如此,大多数浏览器会在this
句柄(而不是onclick
)期间传递适当的href
,正如许多其他答案所指出的那样。如果您想恰当地处理this
,则需要执行this question中详述的内容。