一个简单的换背景JS程序,但输出的总是12,感觉FOR循环没起来问题,是哪里出了问题呢?
li总有12个
var OMain = document.getElementById("main");
/*获取标签组名*/
var OLi = document.getElementsByTagName("li");
for(var i=0;i<OLi.length;i++){
OLi[i].onclick = function()
{
alert(i);
OMain.style.background = "url(img/32_"+i+".jpg)";
OMain.style.backgroundSize = "cover";
}
}
Javascript 没有 块作用域
只有 函数闭包作用域(当然 ECMA6就有块作用域了, 不过可以无视
观察你的代码, 可以看出, background的i是在onclick时确定的, 此时循环体早都执行完了, 故不管你点哪个都是12(OLi.length)
改法多种, 只举一例
for(var i=0;i<OLi.length;i++) ~function(i){