读书人

这段代码为什么会显示alert(5);怎么

发布时间: 2012-05-20 16:03:12 作者: rapoo

这段代码为什么会显示alert(5);如何按原有意图显示alert(0)~alert(4);
代码如下,应该是闭包的缘故,但还是比较含混,希望有人帮我解释一下。

HTML code
<!DOCTYPE HTML><html><head><meta charset="utf-8" /><title>test</title><style type="text/css">    p {background:gold;}</style><script type="text/javascript"> function init() {        var pAry = document.getElementsByTagName("p");        for( var i=0; i<pAry.length; i++ ) {            pAry[i].onclick = function() {              alert(i);            }     }}</script> </head> <body onload="init();"> <p>p0</p> <p>p1</p> <p>p2</p> <p>p3</p> <p>p4</p> </body> </html> 


[解决办法]
HTML code
<!DOCTYPE HTML><html><head><meta charset="utf-8" /><title>test</title><style type="text/css">    p {background:gold;}</style><script type="text/javascript"> function init() {        var pAry = document.getElementsByTagName("p");        for( var i=0; i<pAry.length; i++ ) {        (function(i){            pAry[i].onclick = function() {                  alert(i);                }                     })(i)    }}</script> </head> <body onload="init();"> <p>p0</p> <p>p1</p> <p>p2</p> <p>p3</p> <p>p4</p> </body> </html>
[解决办法]
楼主 就是 闭包的问题

(function(x){

})(i)

i是实参,x是形参。


搜下 js闭包 一大堆解释。

读书人网 >JavaScript

热点推荐