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

for循环的问题求解释

for循环的问题求解释

qq_流年_22 2016-05-19 00:29:51
<script>     var oUl=document.getElementsByTagName('ul')[0];     var aLi=document.getElementsByTagName('li');     var aDiv=document.getElementsByTagName('div');     for(var i=0;i<aLi.length;i++){         aLi[i].index=i;         aLi[i].onclick=function(){             for(var j=0;j<aLi.length;j++){                 aLi[j].className='';                 aDiv[j].className='';             }             this.className='ali';             aDiv[this.index].className='show';         }     } </script>这样可以执行<script>     var oUl=document.getElementsByTagName('ul')[0];     var aLi=document.getElementsByTagName('li');     var aDiv=document.getElementsByTagName('div');     for(var i=0;i<aLi.length;i++){         aLi[i].index=i;         aLi[i].onclick=function(){                 aLi[i].className='';                 aDiv[i].className='';             this.className='ali';             aDiv[this.index].className='show';         }     } </script>这样写就没有反应   为什么函数里要使用for循环  求解释 
查看完整描述

4 回答

?
weibo_哆啦A梦有大口袋_0

TA贡献107条经验 获得超146个赞

<script>
    var oUl=document.getElementsByTagName('ul')[0];
    var aLi=document.getElementsByTagName('li');
    var aDiv=document.getElementsByTagName('div');
//遍历所有的li
    for(var i=0;i<aLi.length;i++){
    //把li中的索引赋给当前li的索引,清除空格符所占的索引的位置
        aLi[i].index=i;
    //当前li的单击事件
        aLi[i].onclick=function(){
            //遍历所有的li
            for(var j=0;j<aLi.length;j++){
                //清空所有li的类名
                aLi[j].className='';
                //清空所有div的类名
                aDiv[j].className='';
            }
            //当前li的类名=“ali”;
            this.className='ali';
            //当前li所对应的div的类名等于show
            aDiv[this.index].className='show';
        }
    }
</script>

看完这段代码,现在知道你的第二段代码错哪里了吧

查看完整回答
2 反对 回复 2016-05-19
?
涂大仙

TA贡献18条经验 获得超15个赞

第一次使用for循环,是遍历所有的ali,并给ali添加onclick事件,第二次使用for循环,是onclick事件触发之后,重新遍历一次ali和odiv,以操作他们的className属性。如果第二次没有使用for循环的话,是取不到所有的ali和odiv的。

查看完整回答
1 反对 回复 2016-05-19
?
慕粉者

TA贡献1条经验 获得超0个赞


当触发点击事件时,aLi[i]是不是就等价于this呢?那么

 aLi[i].onclick=function(){

                aLi[i].className='';

                aDiv[i].className='';

            this.className='ali';

            aDiv[this.index].className='show';

        }

此代码是否只是操作当前元素,没测试只是感觉是这样!


查看完整回答
反对 回复 2016-05-19
?
一杯2块的奶茶

TA贡献226条经验 获得超75个赞


那是给没有被点击的写样式

查看完整回答
反对 回复 2016-05-19
  • 4 回答
  • 0 关注
  • 1774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信