考虑以下javascript:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function runMe(){
for(var x=0; x<5; x++){
var d=document.createElement("DIV");
d.innerHTML="test " + x;
d.tabIndex=x;
d.onfocus=function(y){
return function(){
alert("focus: " + y);
}
}(x);
d.onblur=function(y){
return function(){
alert("blur: " + y);
}
}(x);
document.body.appendChild(d);
}
}
</script>
</head>
<body onload="runMe()">
</body>
</html>
运行时,onblur 事件会触发并提醒新聚焦的 div 的索引,而不是提醒先前聚焦的 div 的索引。
奇怪的是,当我注意到 onfocus 事件时,onblur 会按预期工作,提醒之前关注的 div。
我似乎无法找出为什么 onblur 事件会触发与 onfocus 事件相同的索引。
我相信我的关闭是正确的,但我不是 100% 的。
有人对我的错误有所了解吗?