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

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控制吗
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复

目前效果是这样的
此系统的主要特色:
1、每个BLOG支持无限级分类,多级分类并存, 各个BLOG用户分类互不影响。
2、强大的模版定制功能,界面和程序完全分离,所有模块均通过标记调用,可以非常容易的制作模版,可以在线编辑添加模板。
3、系统页面全部采用列表显示,函数标签调用,并应用了缓存和最新的XML技术,调用速度快。
4、支持建立多个Blog,组成blog群,同时每个blog可以有多个用户参与创作与维护、编辑和发布文章,可以再次编辑(此功能由BLOG建立人自由分配)。
5、用户分组功能(默认为管理员、好友、注册网友、匿名网友、黑名单5个组,可以建立新的用户组),多重用户权限管理(共有浏览、回复、发表、阅读隐藏内容、删除、设置六种权限,可与用户分组组合设定),支持连接分组管理。
6、文章可视化编辑,方便排版。支持HTML和表情贴图,是否保密、隐藏及密码阅读。可自动智能分页、手动分页,自动分页时可指定多少字符自动智能分页。
7、多用户和单用户并存,在关闭注册或者设定注册必须通过审核后,您完全可以将它作为单用户BLOG,也可以把它作为自己和朋友们的小群体blog。 可设定首页是否直接进入默认BLOG,可自由制定默认BLOG。8、完善的用户管理,可以屏蔽用户blog,屏蔽恶意ip,对敏感字进行过滤等功能,确保网站的安全运行。
可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)。GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网,包括客户端(PC客户端、android移动端)、服务端、数据库。 开发环境及GGTalk即时通讯源码说明: 服务端和PC端 :VS2010 ,开发语言:C#, .NET Framework 版本: 2.0 (01)注册、登录、查找用户、添加好友好友列表。 (02)自拍头像。 (03)文字聊天、字体设置、GIF动态表情、窗口震动、截图、手写板、登录状态(在线、离开、忙碌、勿打扰、隐身)、输入提醒 (04)群功能:创建群、加入群、退出群、群聊天 (05)文件传送、文件夹传送(支持断点续传) (06)语音视频聊天 (07)远程磁盘 (08)远程协助 (09)共享桌面(可以指定要共享的桌面区域) (10)可靠的P2P (11)网盘 (12)离线消息 (13)离线文件 (14)托盘闪动:跟QQ完全一样,当接收到消息时,托盘会闪动对应好友的头像。点击头像,将弹出与好友的聊天框。 (15)最近联系人列表 (16)系统设置:开机自动启动、麦克风设备索引、摄像头设备索引,叉掉主窗口时关闭程序还是隐藏窗口。 (17)聊天记录:支持本地保存和服务器端保存两种方式。 (18)好友分组:新增/删除分组,修改分组名称,改变好友的所属分组。 (19)打开聊天窗口时,自动显示上次交谈的最后一句话。 (20)输入提醒:像QQ一样,当对方正在输入消息时,我这边的聊天框可以看到对方“正在输入”的提示。 (21)自动记录:GG2014会自动记录上次打开的主界面的位置、大小;最后一次打开的聊天窗口的大小;最后一次设定的字体的颜色、大小等。 (22)主窗体靠边自动隐藏。 (23)录制视频聊天。 (24)支持数据库(SqlServer 2000/2005/2008、MySQL),并可以通过配置在真实数据库和虚拟数据库之间自由切换。 (25)语音视频设备测试 (26)聊天消息加密 (27)系统通知 相关说明 1.如果要将GGTalk开源即时通讯系统部署到广域网,则可以在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则可以指定服务器的IP和Port。 2.麦克风、摄像头的选择可在客户端系统设置窗口(SystemSettingForm)中指定。 3.语音视频:也有很多朋友问语音视频设备的工作怎么不正常,或者语音视频不流畅,这个可以直接参考OMCS官方文档:摄像头、麦克风、扬声器、设备测试 、带宽要求。 4.特别说明一下:GG项目中,只要是我写的代码,全部都放出来了。拜托喜欢每一个dll都有源码的朋友不要再问我要其它的源码了:)
项目名称:高仿QQ2013通讯DEMO-10.30更新 版本号:10.30 最新版本 下载内容: (C#)CC2013局域网通讯源码一份, 可引用至工具箱最新版CSkin.dll-10.30版本界面库一份。 界面库更新说明: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部分细节调优。 实现功能: 1.界面库中多达25个自定义换肤控件,让每个控件设设属性就能达到你想要的效果,支持图片换肤和色调绘制。 2.四边阴影,毛边效果,可以设置阴影宽度和阴影颜色,支持所有系统。 3.拥有密码键盘输入,防护更贴心。 4.8种圆角窗体模式供你选择,淋漓尽致,润滑如圆。 5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:上下左右方均可实现,渐变皮肤。 9.皮肤拖拉方向:可以选择皮肤在拉伸的时候,粘着哪一边拖拉。 10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的效果。 12.完美好友列表,可添加上千好友,不卡不掉线,还可以拖动好友到其他分组。 13.好友悬浮至头像可以查看详细资料卡。 14.窗口可调渐变后透明度:让窗体看起来更像是Vista玻璃窗体风格。 15.聊天窗口可发送图片,大文件,表情,还有震动。 16.按钮控件背景色拥有继承窗体背景主色调的功能,让整体色调保持一致。 17.更是有和如出一辙的扣扣截图。仿真度也达到100%,完美修复所有已知BUG。 18.聊天窗口,可以调字体颜色和字体样式等多项功能。 20.SkinLabel与SkinButton控件字体与窗体标题可以根据背景色暗亮度自动调节字体为黑还是白。 21.MessageBox提示框的美化,并继承调用窗口的色调与背景,MessageBox可所谓已达到帅气的不能再帅气的境界了。 22.天气皮肤自动变,所有窗体根据当地天气自动决定皮肤背景,CC最帅气功能之一。 23.个人资料卡及聊天窗体拥有动态CC秀展示。 24.主界面拖动换肤的同时,所关联的子窗体皮肤也会跟着变。 25.多线程大文件传输功能,支持无上限大文件传输,有进度条显示进程度。 26.界面库已封装了大图取主色调,颜色判断暗亮等多项功能。 27.如果你觉得获取天气让你的登录太慢不想要的话,注释相关调用方法即可快速登录。 界面库交流群:306485590 本人QQ:345015918 注意: Demo版不包括更新,为方便用户查看和使用属性等方法,dll只轻微加密。想反编译的就不要尝试了,里面有上百个类,改错改到你哭。 介意购买正版,永久更新配源码。 看截图或者想购买商业版的用户请访问以下地址: http://www.51aspx.com/code/TotalLikeQQ2013 特权:购买商业版的用户,有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上。 使本项目源码或本项目生成的DLL前请仔细阅读以下协议内容,如果你同意以下协议才能使用本项目所有的功能,否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿,作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL,但是请保留所有相关的版权信息。 2、不能将本项目源码与作者的其他项目整合作为一个单独的软件售卖给他人使用。 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式。 4、以上协议暂时定制,由于还不完善,作者保留以后修改协议的权利。 时间:2013-7-5 作者: 乔克斯 请保留以上版权信息,否则作者将保留追究法律责任。

GGTalk是QQ的高仿版,包括客户端和服务端,可在广域网部署使用,目前最新版本为4.3。我想写一个类似汇总的文章,通过这篇文章,大家可以了解到GG的全貌和最新进展,以及关于一些常见问题的解答也汇总在这里。

言归正传,对我个人而言,我的目标并不是做一个QQ高仿版的玩具,而是希望做成一个能够真正使用的产品(这个过程还有很长的路要走),并持续维护下去。

 

一.已实现的功能

(01)注册、登录、添加好友好友列表

(02)自拍头像。

(03)文字聊天、字体设置、GIF动态表情、窗口震动、截图、手写板、登录状态(在线、离开、忙碌、勿打扰、隐身)、输入提醒

(04)群功能:创建群、加入群、退出群、群聊天

(05)文件传送、文件夹传送(支持断点续传)

(06)语音视频聊天

(07)远程磁盘

(08)远程协助

(09)共享桌面(可以指定要共享的桌面区域)

(10)可靠的P2P

(11)网盘   

(12)离线消息

(13)离线文件

(14)托盘闪动:跟QQ完全一样,当接收到消息时,托盘会闪动对应好友的头像。点击头像,将弹出与好友的聊天框。

(15)最近联系人列表

(16)系统设置:开机自动启动、麦克风设备索引、摄像头设备索引,叉掉主窗口时关闭程序还是隐藏窗口。

(17)聊天记录:支持本地保存和服务器端保存两种方式。

(18)好友分组:新增/删除分组,修改分组名称,改变好友的所属分组

(19)打开聊天窗口时,自动显示上次交谈的最后一句话。

(20)输入提醒:像QQ一样,当对方正在输入消息时,我这边的聊天框可以看到对方“正在输入”的提示。

(21)自动记录:GG2014会自动记录上次打开的主界面的位置、大小;最后一次打开的聊天窗口的大小;最后一次设定的字体的颜色、大小等。 

(22)主窗体靠边自动隐藏

(23)录制视频聊天。

 

二.后续待实现的功能

(1)增加持久化支持

(2)视频会议

 

三.GGTalk开发环境

开发环境:VS2010 ,开发语言:C#, .NET Framework 版本: 2.0 

部署客户端时,客户端机器还需要安装VC++2008 runtime、VC++2010 runtime。

 

四.GGTalk相关说明

1.如果要将GG部署到广域网,则可以在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则可以指定服务器的IP和Port。

2.虚拟数据库

(1)为了部署测试更简单,GG没有采用真实的物理数据库,而是在内存中虚拟了一个数据库(即服务端的VirtualDB类),用于存储用户注册信息、好友关系、群信息等。

(2)GG内置了几个用户:10000、10001、10002、10003,它们的登录密码都是"1"。

(3)GG内置的这几个用户之间都是好友关系。

(4)GG内置了两个群:G001、G002。G001群包含所有内置测试用户,G002群包含10000和10001两个用户。

(5)上述的这些内置信息,在VirtualDB类的构造函数中设定。

3.麦克风、摄像头的选择可在客户端系统设置窗口(SystemSettingForm)中指定。

4.语音视频:也有很多朋友问语音视频设备的工作怎么不正常,或者语音视频不流畅,这个可以直接参考OMCS官方文档:摄像头、麦克风、扬声器、设备测试 、带宽要求。

5.特别说明一下:GG项目中,只要是我写的代码,全部都放出来了。拜托喜欢每一个dll都有源码的朋友不要再问我要其它的源码了:) 

87,910

社区成员

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

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