js中for循环给Array数组中各个元素添加click事件,出现问题。求助

MADCT 2016-08-08 09:28:54
有个全局Array数组中存的是各个button的id,然后我想在一个function中用for循环给这些ID对应的button添加一个button事件。代码如下:
 
var buttonArray=new Array();
buttonArray[0]="solid";
buttonArray[1]="dashed";
buttonArray[2]="dotted";
buttonArray[3]="double";
buttonArray[4]="ridge";
buttonArray[5]="groove";
buttonArray[6]="inset";
buttonArray[7]="outset";
buttonArray[8]="hidden";
buttonArray[9]="none";
function OnClick(e){ //这个e表示点击某个元素,就把这个元素传进来,然后可以设置该元素的边框样式
//绑定边框样式按钮click事件
for(var j=0;j<10;j++){
$("#"+buttonArray[j]).click(function (){
alert(buttonArray[j]);
$(e).css("bolid-style",""+buttonArray[j]+"");
});
}
}


现在的问题是,我这样弄后,点击按钮都是弹出 “undefined”。我的理解是这个类似指针,循环到j=10的时候循环结束,然后buttonArray[j]都变成buttonArray[10]的值了。不知道有没有法子解决这个问题。(除了一个一个的添加)
...全文
1339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MADCT 2016-08-08
  • 打赏
  • 举报
回复
引用 3 楼 qq_32692441 的回复:
作用域问题。。。
谢谢
一陀牛屎 2016-08-08
  • 打赏
  • 举报
回复
作用域问题。。。
MADCT 2016-08-08
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
for(var j=0;j<10;j++){ (function(j){ $("#"+buttonArray[j]).click(function (){ alert(buttonArray[j]); $(e).css("bolid-style",""+buttonArray[j]+""); }); })(j) } 或者把var改成let试试
,可以用。var改成let就报错。请问这个涉及到什么知识点,我要去补补。谢谢了
似梦飞花 2016-08-08
  • 打赏
  • 举报
回复
for(var j=0;j<10;j++){ (function(j){ $("#"+buttonArray[j]).click(function (){ alert(buttonArray[j]); $(e).css("bolid-style",""+buttonArray[j]+""); }); })(j) } 或者把var改成let试试

87,904

社区成员

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

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