第二个警报框说“未定义”?为什么是这样?
<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>
第二个警报框说“未定义”?为什么是这样?
<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>
因为在function
你传递给的内部setTimeout
,this
不再是a
元素。它将是global
对象(window
在浏览器领域)或undefined
严格模式。
相反,存储对this
;的引用
var a = document.getElementById("clickme");
a.onclick = function(); {
var that = this;
alert(this.innerHTML);
setTimeout( function() {
alert( that.innerHTML );
}, 1000);
};
https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout#The_.22this.22_problem
this
在处理程序中具有不同的值setTimeout
。