可能重复:
Referencing “this” inside setInterval/setTimeout within object prototype methods
第二个警告框是“未定义”?为什么是这样?
<a id = "clickme">Click Me!</a>
<script>
var a = document.getElementById("clickme");
a.onclick = function(); {
alert(this.innerHTML);
setTimeout( function() {
alert( this.innerHTML );
}, 1000);
};
</script>
答案 0 :(得分:3)
因为在您传递给function
的{{1}}内,setTimeout
不再是this
元素。它将是a
对象(浏览器中的global
)或严格模式下的window
。
而是存储对undefined
;
this
答案 1 :(得分:1)
https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout#The_.22this.22_problem
this
在setTimeout
处理程序中有不同的值。