首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javaScript闭包的有关问题!求解释

2013-07-09 
javaScript闭包的问题!求解释script languageJavaScriptwindow.onloadfunction(){for(var i1 i 4

javaScript闭包的问题!求解释
<script language="JavaScript">
  window.onload=function(){
     for(var i=1; i <4 ; i++){
        var id = document.getElementById("a" + i);
           id.onclick = function(){
            alert(i);//为什么这里总是显示是4
           }
     }
  }
</script>
<h1>javascript闭包</h1>
<ul>
  <li id="a1">aa</li>
  <li id="a2">aa</li>
  <li id="a3">aa</li>
</ul>
[解决办法]
你这代码不算onload事件,根本就没有用到闭包。
闭包要这样用
<script language="JavaScript">
  window.onload=function(){
     for(var i=1; i <4 ; i++){
        var id = document.getElementById("a" + i);
        (function(i){
           id.onclick = function(){
             alert(i);
           }
        })(i);
     }
  }
</script>
<h1>javascript闭包</h1>
<ul>
  <li id="a1">aa</li>
  <li id="a2">aa</li>
  <li id="a3">aa</li>
</ul> 
[解决办法]
因为没闭包,那个循环在点击之前就循环完毕了

i的值被固定为4
——————
window.onload

当整个页面加载完毕的时候调用onload

热点排行