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

关于this的问题

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

                li[n].className = "";

                div[n].className = "hide";

             }

下面这两段代码放到for遍历上面为什么出错,div[this.index]里的this指向的是谁?

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

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

 window.onload=function(){

        var tab = document.getElementById("tabs")

        var li = document.getElementsByTagName("li");

        var div = tab.getElementsByTagName("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 = "";

                div[n].className = "hide";

             }

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

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

            }

        }

    }


正在回答

3 回答

不难看出,onclick 是在循环中确认的,为了获取这个循环中的数值,你需要用 index 来确认你所点击的标签的索引,如果你用 i 来作索引,那 i 的值只会为2。顺带一句 optionObject.index 是一种对象属性。

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

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

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

this指的就是这段代码所在的那个节点。例如

上面通过li[i].onclick()来激活了for和this.className

那么this指的就是li[i]这个节点,当然,当i为不同数的时候this指得也不同。

所以这里用this可以灵活的选中li中的每一个元素来实现效果,而不是唯一的素数。

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

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468046    人
  • 解答问题       21891    个

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

进入课程

关于this的问题

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