第二个警报框“未定义”

时间:2012-12-06 01:58:59

标签: javascript html

  

可能重复:
  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>

2 个答案:

答案 0 :(得分:3)

因为在您传递给function的{​​{1}}内,setTimeout不再是this元素。它将是a对象(浏览器中的global)或严格模式下的window

而是存储对undefined;

的引用
this

答案 1 :(得分:1)