循环中设置的监听事件怎么传递参数

        做项目的时候遇到一个问题。

        在我的php里面有一个div一直不间断地自左向右滚动着多张小图,我js文件里要做到的效果是一旦点击其中一个小图就把这个小图放大。

        于是我在一个循环里给这二十个小图设置监听。一旦被触发点击函数,那么程序需要知道是哪个小图被点击了,所以我需要传递一个参数(i)来告知程序哪一个小图被点了(代码中的pics数组存储的是在页面中通过getElementsByTagName获得的20张小图,这段代码在window.onload里面被调用):
 

for(var i=0;i<20;i++)  
{            
	pics[i].οnclick=function()
 	{
 		alert(i);
	};   
};

        如上。问题却出现了——明眼人可能很快看出来这样做的结果就是,无论点击哪张小图,alert出来的都是20,而不是被点中的小图的序号。这是因为在window.onload里面从一开始就调用了这块循环,变量 i 理所当然地跟着循环递增到了20。而当监听函数被触发(小图被点击),这个时候alert出来的 i 当然就是20。

        后来找到网友给出的回答:

	for(var i=0;i<20;i++)
	{		
		var paraTrans=function(i)
		{
			pics[i].onclick = function()
			{
				alert(i);
			}
		};
		paraTrans(i);
	}

        这样就解决了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值