有如下代码<input type="button" id="id0" value="test0"/>
<input type="button" id="id1" value="test1"/>
<input type="button" id="id2" value="test2"/>
<input type="button" id="id3" value="test3"/>
<input type="button" id="id4" value="test4"/> 
<script type="text/javascript">
  function fn(num){
   alert(num);
  }
  for(var i=0;i<5;i++){
   $("id"+i).onclick=function(){fn(i);}
  }
  </script>以为点id0会弹出0,点id1弹出1,但是不论点哪个按钮都是弹出5,为什么会这样

解决方案 »

  1.   

    <body>
    <input type="button" id="id0" value="test0"/>
    <input type="button" id="id1" value="test1"/>
    <input type="button" id="id2" value="test2"/>
    <input type="button" id="id3" value="test3"/>
    <input type="button" id="id4" value="test4"/> <script type="text/javascript">
    function $(Id){return document.getElementById(Id)}
      function fn(num){
          alert(num);
      }
      for(var i=0;i<5;i++){
      (function(i){
      $("id"+i).onclick=function(){fn(i);}
      })(i)
      }
      </script>
    </body>
      

  2.   

    包闭问题function fn(num){
    alert(num);
    }
    for(var i=0;i<5;i++){
    (function(i){
    $("id"+i).onclick=function(){fn(i);}
    })(i);
    }