关于js循环中闭包的问题。

 我来答
小熙ps
2016-08-25 · 知道合伙人软件行家
小熙ps
知道合伙人软件行家
采纳数:966 获赞数:9282
毕业于湖南信息职业技术学院,专业计算机网络技术,在IT领域已经专注3年,对各种IT行业都有所了解 。

向TA提问 私信TA
展开全部
每次循环就为对应的编号段落上添加一个click事件,事件的回调函数是执行一个alert();如果你以前没这么用过的话,估计也会认为单击某个段落就会弹出这个段落相应的编号0,1,2,3,5,但实际上是都是弹出

  网上已经有很多讨论的博客了,他们给出了很多方法去实现弹出对应的编号。比较易于理解的方法如下:

  1,将变量i保存在对应的段落的某个属性上:点击查看效果。 var pAry = document.getElementsByTagName("p");
for( var i=0; i< 5; i++ ) {
pAry[i].no = i;
pAry[i].onclick = function() {
alert(this.no);
}
};

2,加一层闭包,i 以函数参数形式传递给内层函数:点击查看效果。
~function test() {
var pAry = document.getElementsByTagName("p");
for( var i=0; i< pAry.length; i++ ) {
(function(arg){
pAry[i].onclick = function() {
alert(arg);
};
})(i);//调用时参数
}
}();

  

  

  
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式