function tt()
  {
   var arr = document.getElementsByTagName("input");
     for(var i = 0;i<arr.length;i++)
    {
        if(arr[i].type == "text")
        {
            arr[i].attachEvent("onclick",function(){abc(i)})
        }
    } 
  }
  
  function abc(id)
  {
  alert(id);
  }
我想用tt()函数给所有文本框注册一个onclick事件,并且要传入不同的i当作参数
我期待每个文本框点击会弹出不同的数字,但是弹出的却都是6,因为我一共有5个文本框,可见i是最后一个。
谢谢

解决方案 »

  1.   

    test:<script language="javascript">
    <!--
    function tt() { 
      var arr = document.getElementsByTagName("input"); 
        for(var i = 0;i <arr.length;i++){ 
            (function(k){
            if(arr[k].type == "text"){ 
                arr[i].attachEvent("onclick",function(){abc(k)})  
            } 
            })(i)
        } 
    } function abc(id) { 
      alert(id); 

    tt()
    //-->
    </script>
      

  2.   


      function abc(_1){
    this.func1 = function(){
    alert(_1);
    }
      }
      function tt() 
      { 
      var arr = document.getElementsByTagName("input");
        for(var i = 0;i <arr.length;i++)
        { 
            if(arr[i].type == "text")
            { 
    var o = new abc(i);
    arr[i].onclick = o.func1;
            } 
        } 
      } 
      

  3.   

    也可以为按钮定义属性
     或用eval绑定事件
      

  4.   

    闭包function tt()
      {
      var arr = document.getElementsByTagName("input");
        for(var i = 0;i <arr.length;i++)
        {
            if(arr[i].type == "text")
            {
                (function(i){
                 arr[i].attachEvent("onclick",function(){abc(i)})
     })(i)
            }
        }
      }
     
      function abc(id)
      {
      alert(id);
      }