【发布时间】:2012-09-11 05:36:19
【问题描述】:
我的 JavaScript 应用程序遇到了令人头疼的问题。
如果我这样写一个元素:
<li onClick="alert(this.tagName)"></li>
我得到“LI”。
但是,如果我这样做:
<li onClick="foo()"></li>
“foo()”在哪里:
function foo(){ alert(this.tagName); }
我得到“未定义”。
我不知道“this”在附加功能方面应该如何工作。但是,我很困惑,因为“this”没有提取元素,而是显然默认为“window”。我不知道为什么会这样。
有人解释一下吗?
【问题讨论】:
-
请先尝试搜索。有很多重复。
this被“动态绑定”到函数的 receiver 或全局对象(例如window)。 -
提示:
<li onClick="foo()"></li>将foo()包装在匿名函数中,而不是直接调用foo()。 -
提示2:this的含义,与你使用它的地方有关。
-
如果您删除内联事件处理程序,您可能会发现它更明智。
标签: javascript function onclick window this