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

来源:10-1 编程挑战

xwj_ouc

2015-04-05 11:39

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]不阔以呢?

写回答 关注

3回答

  • chuan_sir
    2015-04-06 13:26:46
    已采纳

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

    qq_玲玲的...

    为什么不能直接这样li[i].onclick = function(i){... div[i] } 求解释?

    2016-11-25 20:10:30

    共 3 条回复 >

  • qq_刘洪永_0
    2018-05-29 16:27:46

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

  • 精慕门6843847
    2017-11-29 18:24:22

    法人方法

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468192 学习 · 21891 问题

查看课程

相似问题