问答详情
源自:10-1 编程挑战

请问为什么使用一个for循环就可以实现选项卡切换啊?

第二个for循环我知道,就是统一格式化所有选项卡。

第一个for循环是怎么实现选项切换的没看明白。

求解答

提问者:慕尼黑6037883 2019-03-31 15:38

个回答

  • 微虻
    2019-05-16 10:25:53

    从上到下按顺序执行,页面加载到此处运行第一个for里面的oli[i].index=i;此时不执行onclick这一段,当发生点击事件时才执行,建议可以在多处增加console.log()的语句在控制台查看是否执行~

  • FayeShieh
    2019-04-05 11:58:32

    第一个for循环只是遍历一下li,给所有li加上点击事件;第二个for循环作用是,先把其它的class清除掉,再给当前点击的li加上class。没有发生点击事件的时候,外面for循环执行到“oli[i].index=i; ”,当网页加载好的同时就已经获取了所有index,里面的for循环下面两行是点击后才执行的。你看对应的花括号就是了。

    oli[i].onclick = function(){
        // 里面所有的语句都被onclick事件包含。
        ……
    }

    这是我的理解,如果有其他同学的理解跟我不一样欢迎指出来。大家一起学习。谢谢

  • 慕尼黑6037883
    2019-03-31 15:50:13

    当没有发生点击事件的时候,外面那个for循环执行到哪一步啊?是当网页加载好的同时就已经获取了所有index,还是要点击的时候才获取相应的index啊?内for循环下面那两行是要点击事件发生后才执行吗?

  • 慕尼黑6037883
    2019-03-31 15:48:07

    window.onload=function(){

            var oul=document.getElementsByTagName("ul")[0];

            var oli=oul.getElementsByTagName("li");

            var odiv=document.getElementsByTagName("div");

            for(var i=0;i<oli.length;i++){

                oli[i].index=i;

                oli[i].onclick=function(){

                    for(var j=0;j<oli.length;j++){

                        oli[j].className="";

                        odiv[j].className="hide";

                    }

                this.className="on";

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

                }

            }

        }