9 回答

TA貢獻20條經驗 獲得超2個贊
很有意思的題目,因為點擊的時候,里面的 i 會在 i ++ 一次,卻不會改變外面的 i
圖片上傳不了,直接上代碼吧,你可以測試看看
var?lis?=?document.getElementsByTagName("li"); for(var?i?=?0;?i?<?lis.length;?i++){ console.log(i);?//?一開始輸出i var?is?=?i;??//?如果想里面的i,跟外面一樣的話,?可以在這里賦值一下 lis[i].onclick?=?function(event){ console.log(i);?//?當點擊的時候輸出i console.log(is)?//?輸出的?i?就是?1?了 } } //?測試循環的 //?for(var?j?=?1;?j?<=?10;?j++){ //? console.log(j); //? document.onclick?=?function?()?{ //? console.log(j); //? } //?}

TA貢獻1條經驗 獲得超2個贊
哥們,我覺得是你想得太復雜了吧,i=0的時候,i<lis.length,那么i++第一遍。程序執行一遍了,i就變成了1
那么i=1的時候,i<lis.length還是成立的,那么程序自然就會在執行一遍,那么i自然就會在程序執行一遍之后,i++了。
而這時候的i已經不是剛剛的那個 ?i=1 ?的 ?i ?了。而是 i=2 了。所以 i 就是 2呢?。?!我就是這么理解的。你思考一下吧。

TA貢獻10條經驗 獲得超1個贊
其中for循環的作用就是要綁定onclick事件,也就是說當你點擊的時候for循環已經結束了,i當然是2(i=1運行完時,自加一后為2,不成立,便跳出循環)。
要換成索引值
alert(lis[i].index);

TA貢獻361條經驗 獲得超191個贊
i=0的時候判斷i<lis.length為true,然后i++,i=1;
i=1的時候判斷i<lis.length為true,然后i++,i=2;
i=2的時候判斷i<lis.length為false,
所以最后i為2
i放在事件內部是不會循環的,因為頁面加載時for循環綁定了lis[i].onclick事件,而這時候頁面加載好后i已經循環完畢,是個定值,就是lis.length,在這里即為2
添加回答
舉報