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

li的index问题

<script type="text/javascript">

window.onload = function(){

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

        var _ul = _tab.getElementsByTagName("ul")[0];

        var _li = _ul.getElementsByTagName("li");

        var _div = _tab.getElementsByTagName("div");

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

            //不太明白这个index是干嘛的,是每个标签元素都固有的属性吗?

            //为什么下面 this.className不能用_li[i].className代替? this.index不能用i代替呢?

            _li[i].index = i;

            //给li循环绑定onclick()函数

            _li[i].onclick=function(){

                    //先把所有li的样式去掉

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

                        _li[j].className = "";

                        _div[j].className = "hide";

                    }

                    //然后把当前的li设置成on并把hide取消(变成显示状态)

                    this.className = "on";

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

        }

    }

}

</script>

问题如上注释,请不吝赐教。

正在回答

2 回答

也是刚开始学,我猜想 oLis[i].onclick = function() {..} 这里使用了匿名函数,对于oLis[i] 而言,保留下来的之后之前的oLis[i].index = i;  真正点击运行的时候 才会调用oLis[i].index 得到具体的index,如果用j的话,等到具体调用的时候大概j已经变成 li.length了。 (从“匿名函数,”后面开始,都是猜的)

0 回复 有任何疑惑可以回复我~

还js中for循环是瞬间执行完的(比如,一个 j=0,j<=10,的循环,j永远是10),所以你如果使用j每次循环的值,那么你就得在一个单独的地方将值保存下来使用,或者使用自执行函数

for(.....){ 
    (function(i){ 
        //这里的i,就是每次循环的实际的值了 
    })(i) 
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

li的index问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信