好多不懂 求解答 关于元素隐藏的

来源:10-1 编程挑战

qq_无猜_0

2015-05-13 17:26

window.onload = function() {

        var oUl1 = document.getElementById("ul1");

        var aLi = oUl1.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";

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

                    aDiv[j].className = "hide";

                }

                aDiv[this.index].className = "show";//为什么不能直接用aDIV[i].className = "show";

            }        

        }

    }

这是排名第一的答案,有几点不明白

1、为什么不能直接用aDIV[i].className = "show";而非要另外用一个index,前者我试过 不行 怀疑是i的作用域问题,也不知道对不对,求解答

2、另外aLi[i].index = i;这种写法有点不明白,是元素的数据结构就有index这一项吗?还是别的原因?任何元素都可以这样吗?



写回答 关注

2回答

  • 程序爱好者11
    2015-06-05 17:31:39

    我也是这里面的js 不懂   楼主弄明的话 可以给我讲解一下  谢谢

    qq_无猜_...

    不知道你的问题是不是第一个,我就照第一个说好了,不能直接用aDIV[i].className = "show"的原因是当给元素绑定鼠标移到事件之后,i的值一定等于length,但到了执行的时候,再用i就一定不对了,所以答案给每一个变量定义一个属性并赋值。自己理解的不一定对,你好好看看。

    2015-06-05 20:01:44

    共 1 条回复 >

  • muge10
    2015-05-14 19:48:55

    我只知道 aLi[i].index=i 这个写法的意思是给 aLi[i] 自定义一个属性并赋值,但不清楚为啥这样用。对于问题1,我也不大理解。

    建议题主修改一下问题的标题,这样看不点开完全不知道你在说什么。你说呢。

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题