为什么三个按钮点击之后都是显示3,不是应该显示1,2,3,吗?

a7224492 2015-07-06 11:08:45

为什么三个按钮点击之后都是显示3,不是应该显示1,2,3,吗?
...全文
153 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddgx 2015-07-06
  • 打赏
  • 举报
回复
引用 1 楼 KK3K2005 的回复:
btns[i] = (function(i){ return function(){ alert(i) } })(i);
是少了个onclick
a7224492 2015-07-06
  • 打赏
  • 举报
回复
引用 1 楼 KK3K2005 的回复:
btns[i] = (function(i){ return function(){ alert(i) } })(i);
看不懂,能解释下吗?不需要onclick吗?
KK3K2005 2015-07-06
  • 打赏
  • 举报
回复
btns[i] = (function(i){ return function(){ alert(i) } })(i);
chanel_1 2015-07-06
  • 打赏
  • 举报
回复
var btns=document.getElementsByTagName("button"); for(i=0;i<btns.length;++i){ (function(i){ btns[i].onclick=function(){ alert(i); }; })(i); } ---这样写,弹出0,1,2(btn的数组下标是从0 开始的,不是从1开始哦),建议楼主去看看闭包什么的概念。按照你原来的写法,永远只会弹出循环中的最后一个数。因为在i=0,1,2的时候,onclick还没有执行i就已经增加到3了。我现在增加了一个闭包函数自我执行,让每个i的值都能对应到这个click方法。

87,884

社区成员

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

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