Sinoproud
2016-04-04 20:28
window.onload=function(){ var ul1=document.getElementById('ul1'); var li=ul1.getElementsByTagName('li'); var tab=document.getElementById('tab-list'); var div=tab.getElementsByTagName('div'); for(var i=0;i<li.length;i++){ li[i].index=i; li[i].onmouseover=function(){ for(var j=0;j<li.length;j++){ li[j].className=""; div[j].className="hide"; } this.className="active"; div[this.index].className="show"; } } }
因为this代表是当前触发的这个对象;在onmouseover加载后,方法体中不存在i这个变量,并且在这个页面加载时,变量i已经循环完毕,因此才需要赋值给li[i].index保存下来。
因为在function(){}中,i是没有定义的,不信你可以试试,在其中打印i看看,这涉及到作用域,所以需要用this
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题