这里不能写this
可以把this写在前面,比如
obj=this
HTMLobj.setAttribute("onclick",obj.run());

解决方案 »

  1.   

    这里不能写this
    可以把this写在前面,比如
    obj=this
    HTMLobj.setAttribute("onclick",obj.run());
    关键问题不在这里,关键是obj.run()这个函数没有被设置为onclick="obj.run()"
    而是直接执行了obj.run(),明白了吗?
      

  2.   

    设置的时候采用
    new Fucntion(obj+".run()")
      

  3.   

    你alert(obj+".run()")一下这个吧,看看是不是我们想要的
      

  4.   

    不对吧。obj=this
    HTMLobj.setAttribute("onclick",obj.run());
    这样写和 this.run();是一样的
    this指针并没有传到函数内
    如果this.run函数中没有this关键字,那么这么写就能正确执行
    而 new Fucntion(obj+".run()")也是不对的
    obj是对象,转换成字符串的结果也无法运行吧.Function.prototype.bind = function(o){
        var m = this;
        var a = arguments;
        return function(){ 
           m.apply(o,a);
        }
    }
    HTMLobj.setAttribute("onclick", obj.run.bind(this));
      

  5.   

    说白了,我要得到是把this.run()转换成字符串
    例如
    this 为 a,我则想要 "a.run()" 的字符串
    this 为 b,我则想要 "b.run()"的字符串
    问一下,怎么实现?
      

  6.   

    <input type="button" id="btn1" value="click me!">
    <input type="button" id="btn3" value="click me!">
    <script>
    function setonclickevent(HTMLobj) //一个HTML标签例如Button
    {
    HTMLobj.run = function()
    {
    alert(this.id);
    }
    HTMLobj.onclick = function ()
    {
    this.run();
    }
    }
    setonclickevent(btn1);
    setonclickevent(btn3);
    </script>
      

  7.   

    感觉楼主的思路其实应该重新整理下,按照现在的逻辑下面的到是可以实现,不过感觉很别扭
    <script language=javascript>
    function setonclickevent(HTMLobj,flag) //一个HTML标签例如Button
    {
    this.run=function()
    {
    alert();
    }
    if(flag)
    {
    HTMLobj.onclick=function(){new setonclickevent(HTMLobj,false).run()};//设置HTML标签的属性 onclick
    }
    }
    </script>
    <input name="button1" type=button>
    <input name="button2" type=button onclick="new setonclickevent(document.getElementById('button1'),true).run()">
      

  8.   

    hbhbhbhbhb1021(天外水火(我要多努力)) 如果我想把onclick也想封装到函数怎么做?
    我是通过一个函数来做的,但就是实现不了
      

  9.   

    to fantiny:是哦,最近放点代码就当恭喜我了吧,呵呵
    <script language=javascript>
    function aa(temp)
    {
    new setonclickevent(temp,false).run()
    }
    function setonclickevent(HTMLobj,flag) //一个HTML标签例如Button
    {
    this.run=function()
    {
    alert();
    }
    if(flag)
    {
    HTMLobj.attachEvent("onclick",new Function("aa\(''\)"));
    }
    }

    </script>
    <input name="button1" type=button>
    <input name="button2" type=button onclick="new setonclickevent(document.getElementById('button1'),true).run()">