javascript add onclick我的参数有错误

时间:2016-06-20 18:44:12

标签: javascript function onclick getelementbyid

当我点击td案例时,请说明为什么参数传输错误了!

<!DOCTYPE html>
<html>
    <body>
        <table border=1>
          <tr>
            <td id="i_0">i_0</td>
            <td id="i_1">i_1</td>
            <td id="i_2">i_2</td>
            <td id="i_3">i_3</td>
            <td id="i_4">i_4</td>
            <td id="i_5">i_5</td>
          </tr>
        </table>

        <script>

          for (var i = 0; i < 6 ; i++) {  
             oc = document.getElementById("i_" + i);
             oc.onclick = function() { montre(oc.id , "t_" + i); };
          }

          function montre(bloc,item) {  
              alert(bloc + " | " + item);
          }

        </script>
    </body>
</html>

在警告弹出窗口中,我正在等待&#34; i_0 | T_0&#34;或&#34; i_1 | T_1&#34;或者...我总是&#34; i_5 | t_6&#34;,为什么?

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

试试这个

  function onClick(oc, index) {
     return function() {
        montre(oc.id , "t_" + i);
     }
  }
  for (var i = 0; i < 6 ; i++) 
  { 
     oc = document.getElementById("i_" + i);
     oc.onclick = onClick(oc, i);
  }

变量oc和i在循环的每次迭代中都被更改。一旦循环结束,它就等于它在循环的最后一次迭代中的最后一个值。每个单击事件共享相同的变量,因此在一个位置更改它会更改所有单击事件句柄。我建议的修复程序为每个单击事件处理程序创建一个新的局部变量。