9 回答

TA貢獻(xiàn)20條經(jīng)驗(yàn) 獲得超2個(gè)贊
很有意思的題目,因?yàn)辄c(diǎn)擊的時(shí)候,里面的 i 會(huì)在 i ++ 一次,卻不會(huì)改變外面的 i
圖片上傳不了,直接上代碼吧,你可以測(cè)試看看
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);?//?當(dāng)點(diǎn)擊的時(shí)候輸出i console.log(is)?//?輸出的?i?就是?1?了 } } //?測(cè)試循環(huán)的 //?for(var?j?=?1;?j?<=?10;?j++){ //? console.log(j); //? document.onclick?=?function?()?{ //? console.log(j); //? } //?}

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

TA貢獻(xiàn)10條經(jīng)驗(yàn) 獲得超1個(gè)贊
其中for循環(huán)的作用就是要綁定onclick事件,也就是說當(dāng)你點(diǎn)擊的時(shí)候for循環(huán)已經(jīng)結(jié)束了,i當(dāng)然是2(i=1運(yùn)行完時(shí),自加一后為2,不成立,便跳出循環(huán))。
要換成索引值
alert(lis[i].index);

TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
i=0的時(shí)候判斷i<lis.length為true,然后i++,i=1;
i=1的時(shí)候判斷i<lis.length為true,然后i++,i=2;
i=2的時(shí)候判斷i<lis.length為false,
所以最后i為2
i放在事件內(nèi)部是不會(huì)循環(huán)的,因?yàn)轫撁婕虞d時(shí)for循環(huán)綁定了lis[i].onclick事件,而這時(shí)候頁面加載好后i已經(jīng)循環(huán)完畢,是個(gè)定值,就是lis.length,在這里即為2
添加回答
舉報(bào)