js中使用闭包循环给元素注册事件(带不同的参数)

来源:赵克立博客 分类: HTML5 标签:js函数发布时间:2015-10-16 09:05:38最后更新:2016-01-05 22:17:27浏览:2599
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2016-01-05 22:17:27
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

给页面中的所有a标签注册一个单击事件

var objlist = document.getElementsByTagName('a');  
for (var i = 0; i < objlist.length; i++) {    
	  objlist[i].onclick = function() {      
		alert(i);      
	  };  
}

上面代码我们本意是想给页面中的a注册一个单击事件弹出来对应的序号,但是使用结果是总是弹出最后一个数字

出现上面的原因也不难解释,因为变量i注册过后,它的值是一直变化的并没有在内存在保留,一直循环到最后一个值

下面再看一个示例

var objlist = document.getElementsByTagName('a');  
for (var i = 0; i < objlist.length; i++) {
  (function(){
	  var a=i;        
	  objlist[i].onclick = function() {      
		alert(a);      
	  };  
  })();
}

上面代码使用啦一个闭包,用一个匿名函数把注册的代码放在里面这个注册事件的过程就形成啦一个闭包把i值给a,a就是闭包变量,

给一个元素注册好事件后变量的值并不会消失。这样就实现我们想要的功能啦


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python