HTML代码里可以写
<input type="text" onfocus='onFocus(this);'>如果动态的用JavaScript怎么传这样的类似this的参数.var text_box = document.getElementById("box");
text_box.onfocus = onFocus;//这里有没有什么办法把this之类的参数让它响应的时候, 自动处理.

解决方案 »

  1.   

    如果你直接写在window下面,参数可以用全局变量
    var a = 1 , b= 2;
    window.onload = function(){
      var text_box = document.getElementById("box");
       text_box.onfocus = function(){
           
          return a+b;
            
       };
    }如果你定义在类里面function A(arg0 , arg1){
      this.a = arg0;
      this.b = arg1;
    }
    A.prototype.fnOnFocus = function(){
       var me = this;
        return me.a+me.b;
    }
      

  2.   

    js的事件都有一个隐含参数arguments,可以使用调试模式查看参数的具体信息
    var oT = function()
    {
    var oEvent = arguments[0]; //事件
    var oTarget = oEvent.srcElement || oEvent.target ; //获取发生事件的目标(IE为srcElement ,火狐是target)
    oTarget.style.color='red'; //事件目标字体变红色
    }
      

  3.   

    text_box.onfocus = onFocus;//这里有没有什么办法把this之类的参数让它响应的时候, 自动处理.谁调用了onfocus,this就代表调用对象的引用.
    监听事件默认的第一个参数是event对象,可以用arguments[0]取到
      

  4.   

    <input type="text" value="1">
    <input type="text" value="2">
    <input type="text" value="3">
    <script type="text/javascript">
        var input=document.getElementsByTagName("input");
        for(var i=0;i<input.length;i++){
            input[i].onfocus=function(){
                alert(this.value);
            }
        }
    </script>
      

  5.   

    text_box.onfocus = function(e){    //e:表示事件参数  事件参数里面可以拿到触发事件的对象
    };
      

  6.   


    不行, e是undefined, arguments也不行, length是0
      

  7.   

    this那个最简单了, 怎么没想到呢?还找到了一个闭包的方法obj.onfocus = (function(param){
        return function(){
            //回调的时候, param就是想传的参数.
        }
    })(param);如果仅仅是方法对象本身, this最直接了, 其它参数其实可以用对象的属性来传递, 这样连闭包都用不着.