慕田峪8701529
2017-05-10 22:02:27
window.onload=function() { ? ?var oli = document.getElementsByTagName("li"); ? ?var i = 0; ? ?for (i = 0; i < oli.length; i++) { ? ? ? ?oli[i].index = i; ? ? ? ?oli[i].onmouseover = function () {? ? ? ? ?? ? ? ? ? ? ?this.style.background = "url(xz.gif) no-repeat 0 0";? ? ? ? ? ?? ? ? ? ? ?}? ? ?? ? ? ? ? ?}}
3 回答

風(fēng)箏_0010
TA貢獻(xiàn)45條經(jīng)驗(yàn) 獲得超15個(gè)贊
????在JS的預(yù)解釋階段,也就是這個(gè)函數(shù)執(zhí)行之前都會(huì)被當(dāng)做字符串存到內(nèi)存里面。如果換成oli[i],這個(gè)i是一個(gè)引用,所以你觸發(fā)mouseover事件的時(shí)候會(huì)根據(jù)沿著作用域查找i,但是for循環(huán)里面的i已經(jīng)是oli.length了,所以這樣會(huì)你打印出來的全部都是"提交成功(oli.length+1)分",但是如果是this,這樣函數(shù)運(yùn)行的時(shí)候會(huì)查找this的值,發(fā)現(xiàn)this指向你鼠標(biāo)劃過的li,所以這個(gè)時(shí)候正好就對(duì)應(yīng)了。
function?()?{ ????alert("提交成功"?+?(this.index?+?1)?+?"分"); }
添加回答
舉報(bào)
0/150
提交
取消