简单实现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 相关文章推荐
Javascript 判断 object 的特定类转载
Feb 01 Javascript
JavaScript 数组运用实现代码
Apr 13 Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
侧栏跟随滚动的简单实现代码
Mar 18 Javascript
jquery实现标题字体变换的滑动门菜单效果
Sep 07 Javascript
validationEngine 表单验证插件使用实例代码
Jun 15 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
微信小程序时间戳转日期的详解
Apr 30 Javascript
javascript关于“时间”的一次探索
Jul 24 Javascript
微信小程序嵌入腾讯视频源过程详解
Aug 08 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 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
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
浅析php工厂模式
2014/11/25 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php中关于换行的实例写法
2019/09/26 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
简单解析Django框架中的表单验证
2015/07/17 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
pytorch梯度剪裁方式
2020/02/04 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
网络教育自我鉴定
2013/11/01 职场文书
个性大学生自我评价
2013/12/04 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
产品生产计划书
2014/05/07 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
2015年化验室工作总结
2015/04/23 职场文书
婚宴致辞
2015/07/28 职场文书
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS