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

向各位请教,我还是不能理解它的原理

这里的 aLi[i].index=i ;  这样写的意义是什么?

index 属性可返回下拉列表中选项的索引位置。那么这里设置aLi的索引位置其意义是什么?换句话说为什么这里要这么设置呢?

用aLi.length做for循环这个能够理解,是循环了aLi的index和aLi[i].onmouseover=function(){};

那么再function里面在循环aLi的length给它aLi.className=""这一步是为什么?for循环里面循环不是二维数组的用法吗?这里面创建了一个二维数组并给每个aLi的class为空?

而其下一步给的this.className="active"; 表示什么?这里的this是aLi[i]的onmouseover的aLi;

那么为什么这里aDiv[j]循环在aLi[i].onmouseover里面循环呢?而后aDiv[this.index]里面的this表示什么呢?

求解,问题很多,麻烦大神耐心讲解下,非常感谢,无以为报。

正在回答

2 回答

 window.onload = function(){
        var oUl = document.getElementById("ul1");
        var aLi = oUl.getElementsByTagName("li");
        var oDiv = document.getElementById('tab-list');
        var aDiv = oDiv.getElementsByTagName('div');
        //对头部进行循环
        for(var i=0; i<aLi.length; i++){
            //给每一个导航添加一下索引
            aLi[i].index=i;
            //给每一个导航添加鼠标经过事件
            aLi[i].onmouseover=function(){
                //循环所有的导航并且清空激活样式
                for(var i=0; i<aLi.length; i++){ 
                    aLi[i].className='';
                }
                //给鼠标所在的导航添加激活样式
                this.className='active';
                //循环所有的内容区域 并添加上bd的className  其实这一部的真正目的是为了去掉内容区域上的 on 样式,也就是让所有的div隐藏
                for(var j=0; j<aDiv.length; j++){
                    aDiv[j].className = 'bd';
                }
                //把导航对应的索引位置的 div 显示出来,这里也就是添加index的作用,通过这个索引来找到对应的div 这里的 this 就是指上面鼠标所在的导航
                aDiv[this.index].className = "bd on";
            }
        }
     }

不知道这样能不能解决你的问题

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

Mountain_Ghost 提问者

那么请问为什么这里 aDiv[this.index].className = "bd on"; 添加index索引就能找到对应的div呢?
2015-11-19 回复 有任何疑惑可以回复我~
#2

李晓健 回复 Mountain_Ghost 提问者

因为他们都是3个 三个导航对应的index分别是 0 1 2 三个内容区 在数组里对应的数组的索引也是 0 1 2.
2015-11-19 回复 有任何疑惑可以回复我~
#3

Mountain_Ghost 提问者 回复 李晓健

非常感谢你的回答,对乐于分享知识的人先送上我的敬佩。然后请问前辈,能给个系统学习JS的方法吗?我是那种能用别人代码但自己写不出来的人,我很想能自己写JS插件,请问前辈,我该怎么做?有什么样的书推荐吗?我的HTML+CSS功底非常扎实,但JS因为却不太好,希望您能帮助我,非常感谢!!!
2015-11-19 回复 有任何疑惑可以回复我~
#4

千里码

请问前辈,头部循环是为了什么呢??
2015-11-26 回复 有任何疑惑可以回复我~
#5

慕移动7500465

你好! var otab=document.getElementById("tabs"); var oul=otab.getElementsByTagName("ul"); //var oli= oul.getElementsByTagName("li");请问下为什么不能用oul对象调用这个方法?看了调试信息说它没有, 再问下,我怎么知道哪些对象有哪些方法没有哪些方法呢? var oli = document.getElementsByTagName('li');
2016-01-11 回复 有任何疑惑可以回复我~
#6

慕移动7500465 回复 李晓健

请问下//循环所有的导航并且清空激活样式 for(var i=0; i<aLi.length; i++){ aLi[i].className=''; } //给鼠标所在的导航添加激活样式 this.className='active'; 这个清除和激活是在您这里才知道这个东西的,请问还可以在哪看到相关解释呢?
2016-01-11 回复 有任何疑惑可以回复我~
查看3条回复

javascript 高级程序设计第三版   这本书  好好看看

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

qq_Up_2

我想问下问题哦。aLi[i].index=i这条语句相当于给每一个li元素添加一个属性index是吗,可是li元素并没有index这个属性啊,这点是如何理解的?还有onmouseover事件的函数并没有收到形参,为什么在函数内部使用了this呢?这个this代表哪个对象?
2015-12-03 回复 有任何疑惑可以回复我~
#2

MR熊 回复 qq_Up_2

对于这个例子,this代表鼠标所在的那个li元素,因此this.index的值为现在鼠标所在的那个li的索引。
2016-01-08 回复 有任何疑惑可以回复我~
#3

Aidcat 回复 qq_Up_2

只是给对象"index"字段赋值而已,和用"index2"、"ind"没什么区别
2016-01-09 回复 有任何疑惑可以回复我~
#4

慕姐8289045

想问一下,第一个问题,这里哪里体现了三个标题一一对应自己本该对应的那个内容? 第二个问题,为啥 this.className='active', aDiv[this.index].className = "bd on"这两句只是运用了类名而已,怎么就可以显示出来了?有点不太理解,,,,,,,
2016-07-26 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

向各位请教,我还是不能理解它的原理

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