我用document.createElement("button").onclick=show;这样可以调用,
document.createElement("button").onclick=show(id);  就不可以了
请问各位大侠,document.createElement("button")这样创建的button注册事件怎么才能够
传递参数 id 了
请各位大侠帮帮忙,满意一定散分

解决方案 »

  1.   

    document.createElement("button").onclick=(function(n){return function(){show(n)}})(id);
      

  2.   

    1 onclick= 期待的是函数句柄
    2 function(){}是匿名函数, 相当于 fun = function(){}
      onclick= fun ,相当于 onclick=function(){},
      进一步 onclick=show 想过上等同于 onclick=function(){show()}
    3 ()的优先级最高,()中的语句立即执行,(function(){})(),  相当于fun = function(){}; fun()
      进一步,匿名函数如果有参数 (function(n){}), 调用的时候就是 (function(n){})(id)
      相当于fun = function(n){}; fun(id), 这样就把id传进去了,并且是在定义函数的时候同时传入的。4 因为 1,所以在3中的匿名函数中返回 函数句柄 return function(){}
      (function(n){return function(){}})(id)
      其中再调用show的话 (function(n){return function(){show(n)}})(id) 这样show就得到id了
      
      

  3.   

    这样的话比较麻烦啊,不过还是谢谢你
    document.createElement("button").setAttribute('onclick',show('id'));
    我这样也可以得到id
    问题又来了,为什么页面一加载就调用show('id')方法了
    当我单击button的时候却没反应呢