为什么加上setTimeout, elem里面的this就指向window了?如果去掉setTimeout就指向当前了.这是为什么?
还有当鼠标移动上的时候只弹出一次..这是因为setTimeout的队列问题吗?那要怎么来清除队列呢?
<html>
<head>
</head>
<body>
<p>top</p>
<script type="text/javascript">
var para = document.getElementsByTagName("p")[0];
para.onmouseover = setTimeout("elem()",1000);
function elem(){
alert(this)
}
</script>
</body>
</html>
还有当鼠标移动上的时候只弹出一次..这是因为setTimeout的队列问题吗?那要怎么来清除队列呢?
<html>
<head>
</head>
<body>
<p>top</p>
<script type="text/javascript">
var para = document.getElementsByTagName("p")[0];
para.onmouseover = setTimeout("elem()",1000);
function elem(){
alert(this)
}
</script>
</body>
</html>
clearTimeout(sto);
function elem(){
alert(this)
para.onmouseover = setTimeout("elem()",1000);
}
<html>
<head>
</head>
<body>
<p>top</p>
<script type="text/javascript">
var para = document.getElementsByTagName("p")[0];
// para.onmouseover = setTimeout("elem()",1000);
para.onmouseover = window.elem;
function elem(){
alert(this)
}
</script>
</body>
</html>
<html>
<head>
</head>
<body>
<p>top</p>
<script type="text/javascript">
var para = document.getElementsByTagName("p")[0];
para.onmouseover = elem();
var sto;
function elem(){
alert(this);
sto = setTimeout("elem()",1000);
}
function stop(){
clearTimeout(sto);
}
</script>
<input type="button" value="stop" onclick="stop()">
</body>
</html>
setTimeout会改变函数的excute context主要也就是这里的this,会把这个函数调的全局的context里执行,所以this会指向window,而不是什么setTimeout的队列。