window.onload = function() { var obj1 = document.getElementById("ul1"); var objli = obj1.getElementsByTagName("li"); var adiv = document.getElementById("my_table"); var divs = adiv.getElementsByTagName("div"); for(var i=0;i<objli.length;i++){ objli[i].index=i; objli[i].onclick = function(){ for(var j = 0; j < objli.length; j++) { objli[j].className = ""; divs[j].className = "hide"; } this.className = "active"; divs[i].className = "show";//divs[this.index].className = "show"; } } }
为什么用语句:divs[i].className = "show";修改div的class就没有响应,改成注释就是正确的?
这个i的外循环只会执行一次 之后i就不会变了 你点击事件以后i的值是一会保持不变的
我只能说这个是 闭包的知识 。"divs[i].className"里的 i一直都是3
我也是新手,我感觉你的代码这里问题出在"divs[i].className"里的 i 上,不如你alert一下这个i试试