首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于index索引的有关问题

2013-01-23 
关于index索引的问题做的是一个弹出菜单,点击某一个li标签改变box的display,如果我给定一个序号这段JS就能

关于index索引的问题
做的是一个弹出菜单,点击某一个li标签改变box的display,如果我给定一个序号这段JS就能正常执行,使用索引就会出问题,看了半天也没看出自己哪里写错了,跪求高人指点迷津!ps:话说这种写法貌似比较常用的是创建选项卡……

<script type="text/javascript">
window.onload=function ()
{
var oNav=document.getElementById('nav');
var aLi=oNav.getElementsByTagName('ul')[0].getElementsByTagName('li');
var aBox=getByClass(oNav,'box');
var i=0;

for (i=0; i<aLi.length; i++)
{
aLi[i].index=i
aLi[i].onclick=function ()
{
for (i=0; i<aLi.length; i++)
{
aBox[i].style.display='none'
}
aBox[this.index].style.display='block'
};
};
};
function getByClass(o,n)
{
var arr=[];
var s=o.getElementsByTagName('*');

for (var i=0; i<s.length; i++)
{
if (s[i].className==n)
{
arr.push(s[i]);
};
};
return arr;
};
</script>

[解决办法]
你的onclick函数应该使用闭包:
aLi[i].onclick=function ()
        {
            for (i=0; i<aLi.length; i++)
            {
                aBox[i].style.display='none'
            }
            aBox[this.index].style.display='block'
        };
改为:
    aLi[i].onclick=(function (e){
        return function(){
            for (var i=0; i<aLi.length; i++){
                aBox[i].style.display='none'
            }
            aBox[e].style.display='block';
        }
    })(i);
[解决办法]
你在 循环体力  alert 看看 变量 i到底是什么就可以了。参考闭包的概念:http://blog.csdn.net/xiaofan_sap/article/details/4676378

热点排行