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

为什么要用div[this.index]而不阔以直接用div[i]?

window.onload=function(){
        var oTab = document.getElementById("tabs")
        var li = document.getElementsByTagName("li");
        var p = oTab.getElementsByTagName("p");//oTabs.get...是为了定义className作用对象为id为tabs下的所有文本div
        
        for(var i=0;i<li.length;i++){//获取所有i编号的元素
          li[i].index = i;  //定义一个index属性对li进行编号
            li[i].onclick = function(){//再注册一个点击事件,当点击的时候所有标签都恢复最初状态
            for(var n=0;n<li.length;n++){//这步是相对于未被点击部分的样式
                li[n].className = "";
                p[n].className = "hide";
            }
            this.className = "on";//再对点击事件添加相应的属性
            p[this.index].className = "";//通过之前的index编号绑定的指定div
            }
        }
    }

倒数第四行为什么要构建li[i].index=i;而且倒数第四行还要用p[this.index]。为什么把li[i].index=i删掉,倒数第四行改成p[i]不阔以呢?

正在回答

4 回答

因为在点击选项卡调用funtion()函数时i的值并没有传进来啊。

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

muge10

你好,你说的这句“点击选项卡调用funtion()函数时i的值并没有传进来”不大明白,能再解释下吗?
2015-05-14 回复 有任何疑惑可以回复我~
#2

xwj_ouc 提问者

非常感谢!
2015-11-05 回复 有任何疑惑可以回复我~
#3

qq_玲玲的大_04311806

为什么不能直接这样li[i].onclick = function(i){... div[i] } 求解释?
2016-11-25 回复 有任何疑惑可以回复我~

不可以  由于在这里有两个for循环,在外面的循环结束之后的i是一个遍历结束之后的值就是li.length-1.在内循环中访问的i的值都是li.length-1.所以我们需要给li[i]添加一个数组的属性值。使得li[i].index指向的是当前点击的索引值。

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

法人方法

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

举报

0/150
提交
取消

为什么要用div[this.index]而不阔以直接用div[i]?

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