代码很简单,如下,我希望得到的是弹出111,然后弹出2:<input type="button" id="a1" onclick="t1(this);" value="111" />
<script type="text/javascript">
    var obj = document.getElementById("a1");
    var b = obj.onclick;
    obj.onclick = function (){
        b(obj);// 怎么把这个obj代替上面的this传入?
        alert(2);
    }
    
    function t1(obj){
        // 这里得到的obj,总是window
        alert(obj.value);
    }
</script>不要告诉我直接用:
obj.onclick = function (){
    t1(obj);// 因为这个t1是由别人提供的,命名谁知道是啥
    alert(2);
}

解决方案 »

  1.   


    <input type="button" id="a1" onclick="t1(this);" value="111" />
    <script type="text/javascript">
        var ob = document.getElementById("a1");
        var b = ob.onclick;
    var that = '';
        ob.onclick = function (){
    that = this;
            b(ob);// 怎么把这个obj代替上面的this传入?
            alert(2);
        }
        
        function t1(obj){
            // 这里得到的obj,总是window
            alert(that.value);
        }
    </script>
      

  2.   

    var b = obj.onclick; 这样也可以?JavaScript真弱
      

  3.   


    <input type="button" id="a1"  value="111" />
    <script type="text/javascript">
        var obj = document.getElementById("a1");
        var b = obj.onclick;
        obj.onclick = function (){
            alert(this.value) //这里的this对象就是你的input
            alert(2);
        }</script>
      

  4.   


    <input type="button" id="a1" onclick="t1(this);" value="111" />
    <input type="button" id="a2" onclick="t2(this);" value="222" />
    <script type="text/javascript">
    var ob2 = document.getElementById("a2");
        var ob = document.getElementById("a1");
    var c = ob2.onclick;
        var b = ob.onclick;
    var that = ''; //全局that要一个就行
        ob.onclick = function (){
    that = this;
            b(ob);
            alert(2);
        }

    ob2.onclick = function(){
    that = this;
    c(ob2);
    alert(2);
    }
        
        function t1(obj){
            alert(that.value);
        }

    function t2(obj){
    alert(that.value);
    }
    </script>
    一个全局的that就行
      

  5.   

    别人提供的控件,里面有一些文本框和按钮,这些个控件都有定义各自的点击事件或onfocus事件
    也就是说,下面这段代码是别人提供的:
    <input type="button" id="a1" onclick="t1(this);" value="111" />
    <script type="text/javascript">    
        function t1(obj){
            // 这里得到的obj,总是window
            alert(obj.value);
        }
    </script>
    那么我能通过遍历页面得到这些Button,并希望在执行Button的事件时,再执行我自己的事件,就是这个目的,而这个Button的事件都有传递this参数进去。
      

  6.   


    <input type="button" id="a1" onclick="t1(this);" value="111" />
    <script type="text/javascript">
    var addEvent = function(oTarget, sType, fnHandler){
    if(window.attachEvent){
    oTarget.attachEvent("on" + sType, fnHandler);
    }else if(window.addEventListener){
    oTarget.addEventListener(sType, fnHandler, false);
    }
    }
        var obj = document.getElementById("a1");
        addEvent(obj, "click", function(){ alert("自己事件" + obj.value)})
        
        function t1(obj){
            // 这里得到的obj,总是window
    alert('原有事件')
          
        }
    </script>
      

  7.   

    谢谢9楼的兄弟,你的方法不行,参看4楼答复。10楼兄弟的可以,原来js也有addEventListener这样的方法。