请教下大神,为什么我第一次点标题的时候没有反应第二次就可以正常显示或隐藏了

来源:1-5 编程练习

慕UI4137544

2017-08-07 11:09

<!doctype html>

<html>

<head>

    <meta charset="UTF-8">

<title>Document</title>

<style type="text/css">

    *{margin:0;

     padding:0;

     font-size:13px;

     list-style:none;}


.menu{width:210px;

      margin:50px auto;

      border:1px solid #ccc;}


.menu p{height:25px;

        line-height:25px;

        font-weight:bold;

        background:#eee;

        border-bottom:1px solid #ccc;

        cursor:pointer;

        padding-left:5px;}


.menu div ul{display:none;}


.menu li{height:24px;

         line-height:24px;

         padding-left:5px;}

</style>

<script type="text/javascript">


window.onload=function(){


      // 将所有点击的标题和要显示隐藏的列表取出来

      var uls=document.getElementById('menu').getElementsByTagName('ul');

      var ps= document.getElementById('menu').getElementsByTagName('p');   

     // 遍历所有要点击的标题且给它们添加索引及绑定事件

     if(uls.length!=ps.length)return;

        for (var i=0;i<uls.length;i++){

            ps[i].id=[i];

            ps[i].onclick=function(){

              if(uls[this.id].style.display=='none'){

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

              }

              else {

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

              }

            }

        }

     // 获取点击的标题上的索引属性,根据该索引找到对应的列表


     // 判断该列表,如果是显示的则将其隐藏,如果是隐藏的则将其显示出来


}

</script>

</head>

<body>

<div id="menu">

<div>

<p>Web前端</p>

<ul style="display:block">

<li>JavaScript</li>

<li>DIV+CSS</li>

<li>jQuery</li>

</ul>

</div>

<div>

<p>后台脚本</p>

<ul>

<li>PHP</li>

<li>ASP.net</li>

<li>JSP</li>

</ul>

</div>

<div>

<p>前端框架</p>

<ul>

<li>Extjs</li>

<li>Esspress</li>

<li>YUI</li>

</ul>

</div>

</div>

</body>

</html>


写回答 关注

3回答

  • qq_一桥轻雨一伞开_2
    2017-08-15 09:34:44

    通过外链样式和内嵌样式设置元素的display:none样式,用js设置style.display=""并不起作用(通过行内样式设置的会起作用),此时走else给该元素添加了style=display:none;再次点击时js设置样式就起作用了。

  • qq_一桥轻雨一伞开_2
    2017-08-15 09:07:43

    将ul的disply:none写成行内样式就可以了,或者将if判断语句那里的顺序改一下,即当点击的元素为显示时将其隐藏,否则显示

  • 慕仔7231597
    2017-08-09 13:20:48

    window.onload=function(){

       var ps = document.getElementById('menu').getElementsByTagName('p');

       var uls = document.getElementById('menu').getElementsByTagName('ul');

       if (ps.length != uls.length) {

           return;

       }

       for (var i = 0; i < ps.length; i++) {

           ps[i].id = i;

           ps[i].onclick = function() {

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

                   uls[j].style.display = 'none';

               }

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

           }

       }


    }

    我这样可以

    慕UI413...

    谢谢,虽然不是我想要的答案。但是还是非常感谢你的代码

    2017-08-09 23:27:59

    共 1 条回复 >

Tab选项卡切换效果

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

65469 学习 · 533 问题

查看课程

相似问题