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

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

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

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

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

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

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

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';

       }

   }


}

我这样可以

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

慕UI4137544 提问者

谢谢,虽然不是我想要的答案。但是还是非常感谢你的代码
2017-08-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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