有一个bug:运行程序后首次点击后台脚本和前端框架时,需要点击两下才能展开ul列表,第二次点只需要点击一次就能展开列表,这是为什么?

来源:1-5 编程练习

qq_梦里_0

2016-09-27 16:48

	<script type="text/javascript">
	window.onload=function(){
		
      // 将所有点击的标题和要显示隐藏的列表取出来
      var paras=document.getElementsByTagName("p");
      var uls=document.getElementsByTagName("ul");

     // 遍历所有要点击的标题且给它们添加索引及绑定事件
     
     for(var i=0;i<paras.length;i++)
     {
         paras[i].id=i;
         paras[i].onclick=function(){
             if(uls[this.id].style.display=="none")
             { 
                 uls[this.id].style.display="block";
             }
              else
              {
                  uls[this.id].style.display="none";
              }
             
         }
     }
    

	}
	</script>

运行程序后首次点击后台脚本和前端框架时,需要点击两下才能展开ul列表,第二次点只需要点击一次就能展开列表,这是为什么?

写回答 关注

2回答

  • fengyuwuyu
    2016-09-27 22:51:57
    已采纳

    页面刚打开时,第二个和第三个ul的display属性为undefined,所以刚开始总是执行else语句

    if(uls[this.id].style.display=="block")

                 { 

                     uls[this.id].style.display="none";

                 }

                  else

                  {

                      uls[this.id].style.display="block";

                  }


    共 1 条回复 >

  • renyi3916741
    2016-10-06 16:51:35

     if(uls[this.id].style.display=="block")

                 { 

                     uls[this.id].style.display="none";

                 }

                  else

                  {

                      uls[this.id].style.display="block";

                  }

    点击事件换成这样就ok,你写的那样的话需要加非行间样式

Tab选项卡切换效果

本课程详细介绍网页页面中最流行常用的tab切换效果

65469 学习 · 533 问题

查看课程

相似问题