Js闭包
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8 />
<title></title>
<script>
window.onload = function(){
var aLi = document.getElementsByTagName('li');
for (var i=0;i<aLi.length;i++){
(function(i){
aLi[i].onclick = function(){
alert(i);
};
})(i);
}
};
</script>
</head>
<body>
<ul>
<li>123</li>
<li>456</li>
<li>789</li>
</ul>
</body>
</html>

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>闭包演示</title> <style type="text/css"> p {background:gold;} </style> </head> <body> <p>产品 0</p> <p>产品 1</p> <p>产品 2</p> <p>产品 3</p> <p>产品 4</p> <script type="text/javascript"> window.onload = function(){ var pAry = document.getElementsByTagName('p'); /**for (var i=0;i<aLi.length;i++){ (function(arg){ aLi[i].onclick = function(){ alert(arg); }; })(i); }*/ /** for( var i=0; i<pAry.length; i++ ) { pAry[i].onclick = Function('alert('+i+')'); }*/ /** for( var i=0; i<pAry.length; i++ ) { pAry[i].onclick = new Function("alert(" + i + ");");//new一次就产生一个函数实例 } */ /** for( var i=0; i<pAry.length; i++ ) { (function () { var temp = i;//调用时局部变量 pAry[i].onclick = function() { alert(temp); } })(); } */ /** for( var i=0; i<pAry.length; i++ ) { (function(arg){ pAry[i].onclick = function() { alert(arg); }; })(i);//调用时参数 } */ /** for( var i=0; i<pAry.length; i++ ) { (pAry[i].onclick = function() { alert(arguments.callee.i); }).i = i; } */ }; </script> </body> </html>
人如代码,规矩灵活;代码如诗,字句精伦。



浙公网安备 33010602011771号