- HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <body> <input type="text" name="wb" /> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <script> function change(obj){ alert(obj);//这里的i是6 } (function(){ var array = document.getElementsByName('wb'); for(var i=0;i<array.length;i++){ //alert(i);这里面i的值是012345; array[i].attachEvent("onmouseover",function(){ alert(i); //这里的i是6 change(array[i]);}); } change(i); })(); </script> </body> </html>
为啥i最后的值是6啊,,为啥i在for循环外面还可以用啊?求高手,,,,,,,,
------解决方案--------------------
js不存在块级作用域 只要是在函数内定义的变量则整个函数都可以访问 所以i在for循环外面(但要在对应都的函数里面)还可以用 至于为啥是6 因为i本来是5 i++后变成6
------解决方案--------------------
为啥i最后的值是6啊
因为for循环的执行过程,在最后一次循环(i=5)后,还要执行一次i++,然后判断条件i<array.length,发现不满足,于是退出循环,所以循环结束后i=6
至于在for循环外部使用,这是js的问题了,i实际上相当于在外部定义的
var i;
for(i=0;i<array.length;i++)
所以
for(var i=0,abc=123;i<array.length;i++)
{
}
alert(abc);
像这种,abc也是可以在后面访问到的.....
------解决方案--------------------
for(var i=0;i<array.length;i++)
这句话你理解清楚了没啊,红色部分就是普通的定义变量,又没人说出了循环就销毁变量
蓝色部分是在一次循环结合后执行的,i等于5时,进入循环,然后结束循环时执行i++,i=6,此时就不符合进入循环的条件了
别人家这么写你也这么写,先理解了意思。
- HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <body> <input type="text" name="wb" /> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <input type="text" name="wb"/> <script> function change(obj){ alert(obj);//这里的i是6 } (function(){ var array = document.getElementsByName('wb'); for(var i=0;i<array.length;i++){ //alert(i);这里面i的值是012345; /* array[i].attachEvent("onmouseover",function(){ alert(i); //这里的i是6 change(array[i]);}); */ (function(key){ array[key].onmouseover = function(){alert(key)}; })(i) } })(); </script> </body> </html>
------解决方案--------------------
饿 第二个问题1楼理解得正确
for循环是没有自己的作用域
for(var i=0;i<=3;i++)
{
var aaa=i;