简单实现js点击展开二级菜单功能


Posted in Javascript onMay 16, 2017

虽然,jQuery已经非常好用了,但是实际的开发项目中,还是有很多限制,比如项目组奇葩的要求,不能使用任何插件,当然,也是考虑插件占用资源,毕竟100+KB对与小型项目来说还是非常大的。我最近就遇到做个点击展开二级菜单的要求,当然只能用原生的JS去写来实现,我借鉴了网上的一个案例,补充一下,分享一下:

如果,默认打开页面进来时二级菜单是隐藏的,需要点击才能展现二级菜单,再点击就是隐藏二级菜单。这里有两个点,实现展现和隐藏用display="block"和display="none",另外就是要做一个判断,if   else的判断当前是block还是none。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title>Document</title> 
 <style type="text/css"> 
  #sub_menu_1,#sub_menu_2{ 
   display: none; 
  } 
  ul li:hover{ 
   cursor: pointer; 
  } 
 </style> 
</head> 
<body> 
 <ul> 
  <li onclick = "f('sub_menu_1')">一级菜单1 
   <ul id="sub_menu_1"> 
    <li>二级餐单1</li> 
    <li>二级餐单1</li> 
    <li>二级餐单1</li> 
    <li>二级餐单1</li> 
   </ul> 
  </li> 
  <li onclick="f('sub_menu_2')">一级菜单2 
   <ul id="sub_menu_2"> 
    <li>二级菜单2</li> 
    <li>二级菜单2</li> 
    <li>二级菜单2</li> 
    <li>二级菜单2</li> 
   </ul> 
 
  </li> 
  <li>一级餐单3</li> 
 </ul> 
 <script type="text/javascript"> 
  function f(str){ 
    var sub_menu = document.getElementById(str); 
    var dis_v = sub_menu.style.display; 
     
    if(dis_v == "block") 
     sub_menu.style.display = "none"; 
    else 
     sub_menu.style.display = "block"; 
      
   } 
   
 </script> 
</body> 
</html>

有个注意事项就是一级菜单的li不能添加a标签,不然会不起作用。
如果,你的页面默认进来二级菜单是展现的,点击时才关闭。直接把style标签的样式display="none"去掉就可以。同时需要修改一下js。

<script type="text/javascript"> 
  function f(str){ 
    var sub_menu = document.getElementById(str); 
    var dis_v = sub_menu.style.display; 
     
    if(dis_v == "none") 
     sub_menu.style.display = "block"; 
    else 
     sub_menu.style.display = "none"; 
      
   } 
   
 </script>

仔细看,不然你就会发现你需要点击两次才会出现想要的效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
Sep 25 Javascript
JavaScript程序员应该知道的45个实用技巧
Mar 04 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 Javascript
JavaScript禁止微信浏览器下拉回弹效果
May 16 #Javascript
jQuery实现div跟随鼠标移动
Aug 20 #jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 #jQuery
bootstrap响应式表格实例详解
May 15 #Javascript
VUE多层路由嵌套实现代码
May 15 #Javascript
JavaScript制作简单的框选图表
May 15 #Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 #Javascript
You might like
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
在Python中使用成员运算符的示例
2015/05/13 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python数据结构之图的应用示例
2018/05/11 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
Linux的文件类型
2012/03/07 面试题
2014年两会学习心得体会
2014/03/17 职场文书
大学生实习介绍信
2015/05/05 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
创业计划书之家政服务
2019/09/18 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server