为了账号安全,请及时绑定邮箱和手机立即绑定

10-1编程挑战切换选项卡这一段没整明白,从第一个for循环开始就看不懂了,请大神帮忙指点一下

window.onload = function(){

             var oTab = document.getElementById("tabs");

             var oUl = oTab.getElementsByTagName("ul")[0];

             var oLis = oUl.getElementsByTagName("li");

             var oDivs= oTab.getElementsByTagName("div");


             for(var i= 0,len = oLis.length;i<len;i++){

                 oLis[i].index = i;

                 oLis[i].onclick = function() {

                     for(var n= 0;n<len;n++){

                         oLis[n].className = "";

                         oDivs[n].className = "hide";

                     }

                     this.className = "on";

                     oDivs[this.index].className = "";

                 }

             };

         }


正在回答

1 回答

for(var i=0;i<li.length;i++){//获取所有i编号的元素

            li[i].index = i;  //定义一个index属性对li进行编号 防止闭包函数中无法正常获取当前索引i,而衍生出的一个绑定在dom元素上的数据index

 

            li[i].onclick = function(){//再注册一个点击事件,当点击的时候所有标签都恢复最初状态

            for(var n=0;n<li.length;n++){//这步是相对于未被点击部分的样式

                li[n].className = "";

                div[n].className = "hide";// div所有的div隐藏

            }

            this.className = "on";//再对点击事件添加相应的属性

            div[this.index].className = "";//通过之前的index编号绑定的指定div

            }

        }

我也是找别人才理解了,一起学习

2 回复 有任何疑惑可以回复我~
#1

小虾学前端 提问者

非常谢谢,还是有些不太明白, 是不是执行 li[n].className = "";这个代码时,li[n]这个元素所有的CSS样式都没有了,还是只是没有onclick的属性,既然(n=0;n<li.length;n++),n的可能性就是0、1、2有3个可能,为什么li[n]是未被点击的部分,不能是被点击的部分呢
2016-12-20 回复 有任何疑惑可以回复我~
#2

云彩无色3804005 回复 小虾学前端 提问者

li[n].className = "",是先清除所有的样式, 然后再通过this.className = "on"添加当前样式,我是这么理解的
2016-12-26 回复 有任何疑惑可以回复我~
#3

小虾学前端 提问者 回复 云彩无色3804005

恩恩,谢谢!
2016-12-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

10-1编程挑战切换选项卡这一段没整明白,从第一个for循环开始就看不懂了,请大神帮忙指点一下

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号