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

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

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 回答

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

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

qq_无猜_0 提问者

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

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

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

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

举报

0/150
提交
取消

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

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