一个onclick事件的参数问题

qq276402087 2009-12-27 04:25:34
我用document.createElement("button").onclick=show;这样可以调用,
document.createElement("button").onclick=show(id); 就不可以了
请问各位大侠,document.createElement("button")这样创建的button注册事件怎么才能够
传递参数 id 了
请各位大侠帮帮忙,满意一定散分
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq276402087 2009-12-27
  • 打赏
  • 举报
回复
真的太感谢你了,用你的方法完全可以了,分给你了
qq276402087 2009-12-27
  • 打赏
  • 举报
回复
这样的话比较麻烦啊,不过还是谢谢你
document.createElement("button").setAttribute('onclick',show('id'));
我这样也可以得到id
问题又来了,为什么页面一加载就调用show('id')方法了
当我单击button的时候却没反应呢
hookee 2009-12-27
  • 打赏
  • 举报
回复
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了
qq276402087 2009-12-27
  • 打赏
  • 举报
回复
没看太明白 高手能讲详细一点吗
hookee 2009-12-27
  • 打赏
  • 举报
回复
document.createElement("button").onclick=(function(n){return function(){show(n)}})(id);

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧