好友列表怎样实现点击每个分组都可以显示或隐藏分组?

kuangduijiao1769 2017-06-07 08:52:53
<script type="text/javascript">
function showHide1(){
var obj=document.getElementById("group1");
if(obj.style.display=="none")
obj.style.display="block";
else
obj.style.display="none";

}
function showHide2(){
var obj=document.getElementById("group2");
if(obj.style.display=="none")
obj.style.display="block";
else
obj.style.display="none";

}
</script>
</head>
<body>
<ul>
<li class="group" onclick="showHide1()">
<div>
<span>在线好友</span>
</div>
</li>
<ul class="ful" id="group1" style="display:none">
<li class="fli">
<img class="avatar" src="images/img01.png">
<span class="fname">好友1</span>
</li>
<li class="fli">
<img class="avatar" src="images/img02.png">
<span class="fname">好友2</span>
</li>
</ul>
<li class="group" onclick="showHide2()">
<div>
<span>离线好友</span>
</div>
</li>
<ul class="ful" id="group2" style="display:none">
<li class="fli">
<img class="avatar" src="images/img03.png">
<span class="fname">好友1</span>
</li>
<li class="fli">
<img class="avatar" src="images/img04.png">
<span class="fname">好友2</span>
</li>
</ul>

</ul>
</body>
</html>

我写的方法只适合分组特别少的时候,如果分组多了该怎样实现呢?用class控制吗
...全文
167 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-06-07
  • 打赏
  • 举报
回复

<script type="text/javascript">
function showHide(t){
var obj=t.nextSibling.nextSibling;
if(obj.style.display=="none")
obj.style.display="block";
else
obj.style.display="none";

}
</script>
</head>
<body>
<ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>在线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img01.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img02.png">
    <span class="fname">好友2</span>
   </li>
  </ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>离线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img03.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img04.png">
    <span class="fname">好友2</span>
   </li>
  </ul>

</ul>
天际的海浪 2017-06-07
  • 打赏
  • 举报
回复
可以从元素位置关系上寻找对应的元素

<script type="text/javascript">
function showHide(t){
var obj=t.nextSibling.nextSibling;
if(obj.style.display=="none")
obj.style.display="block";
else
obj.style.display="none";

}
</script>
</head>
<body>
<ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>在线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img01.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img02.png">
    <span class="fname">好友2</span>
   </li>
  </ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>离线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img03.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img04.png">
    <span class="fname">好友2</span>
   </li>
  </ul>

</ul>
<script type="text/javascript">
function showHide(t){
var obj=t.nextSibling.nextSibling;
if(obj.style.display=="none")
obj.style.display="block";
else
obj.style.display="none";

}
</script>
</head>
<body>
<ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>在线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img01.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img02.png">
    <span class="fname">好友2</span>
   </li>
  </ul>
 <li class="group" onclick="showHide(this)">
 <div>
 <span>离线好友</span>
 </div>
 </li>
  <ul class="ful" style="display:none">
   <li class="fli">
    <img class="avatar" src="images/img03.png">
    <span class="fname">好友1</span>
   </li>
   <li class="fli">
   <img class="avatar" src="images/img04.png">
    <span class="fname">好友2</span>
   </li>
  </ul>

</ul>

everccnight 2017-06-07
  • 打赏
  • 举报
回复
可以啊 你在通过动态 创建 你从数据库里获取的东西 添加到页面上不久好了?
kuangduijiao1769 2017-06-07
  • 打赏
  • 举报
回复
4楼手滑 你说的是在每个标签中都绑定上onclick="showHide(this)"吗?这样是可以的, 但是以后会从数据库中读取很多不定量的列表,这样就不行了吧
kuangduijiao1769 2017-06-07
  • 打赏
  • 举报
回复
你说的是在每个标签中都绑定上onclick="showHide(this)"吗?这样是可以的, 但是以后会从数据库中读取很多不定就不行了吧量的列表,这样 function showHide(o){ var ob=o.getAttribute("id"); var obj=document.getElementById("group"+ob); if(obj.style.display=="none") obj.style.display="block"; else obj.style.display="none"; } </script> </head> <body> <ul> <li class="group" id="1" onclick="showHide(this)"> <div> <span>在线好友</span> </div> <ul class="ful" id="group1" style="display:none"> <li class="fli">好友1</li> <li class="fli">好友2</li> </ul> </li> <li class="group" id="2" onclick="showHide(this)"> <div> <span>离线好友</span> </div> <ul class="ful" id="group2" style="display:none"> <li class="fli">好友3</li> <li class="fli">好友4</li> </ul> </li> </ul>
everccnight 2017-06-07
  • 打赏
  • 举报
回复
不需要这样 只需要 在每个组上 添加相同的点击事件,点击事件后获取对应id,通过id在进行1楼所给的操作就好了
kuangduijiao1769 2017-06-07
  • 打赏
  • 举报
回复
怎样才能把事件绑定到group上呢?应该不用再每个标签上写出来吧 毕设刚接触这部分 我试了一下 alert(b)直接跳出两次 第一个class绑定的函数中b也是“group2” 最后不管点击那个分组名都是对第二个分组进行隐藏和显示 请帮忙看一下 window.onload=function(){ var a=document.getElementsByClassName("group"); for(var i=0;i<a.length;i++){ var aid=a[i].getAttribute("id"); var b="group"+aid; alert(b); a[i].onclick=function(){ var ob=document.getElementById(b); alert(ob); if(ob.style.display=="none") ob.style.display="block"; else ob.style.display="none"; } } } </script> </head> <body> <ul> <li class="group" id="1"> <div> <span>在线好友</span> </div> <ul class="ful" id="group1" style="display:none"> <li class="fli">好友1</li> <li class="fli">好友2</li> </ul> </li> <li class="group" id="2"> <div> <span>离线好友</span> </div> <ul class="ful" id="group2" style="display:none"> <li class="fli">好友3</li> <li class="fli">好友4</li> </ul> </li> </ul> </body> </html>
当作看不见 2017-06-07
  • 打赏
  • 举报
回复
楼主思路有些偏差,只需要一个函数 function showHide2(id){ var obj=document.getElementById(id); if(obj.style.display=="none") obj.style.display="block"; else obj.style.display="none"; } 把id 作为参数传入即可,其实这样还是不好,由于会有非常多的id ,所以把事件绑定到group 上面,传入this ,根据层级关系去正确的显示影藏
kuangduijiao1769 2017-06-07
  • 打赏
  • 举报
回复

目前效果是这样的

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧