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 回答
风筝_0010
TA贡献45条经验 获得超15个赞
在JS的预解释阶段,也就是这个函数执行之前都会被当做字符串存到内存里面。如果换成oli[i],这个i是一个引用,所以你触发mouseover事件的时候会根据沿着作用域查找i,但是for循环里面的i已经是oli.length了,所以这样会你打印出来的全部都是"提交成功(oli.length+1)分",但是如果是this,这样函数运行的时候会查找this的值,发现this指向你鼠标划过的li,所以这个时候正好就对应了。
function () { alert("提交成功" + (this.index + 1) + "分"); }
添加回答
举报
0/150
提交
取消