简单实现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读取ASP设定的COOKIE
Feb 15 Javascript
JavaScript中获取未知对象属性的代码
Apr 27 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
javascript和jquery修改a标签的href属性
Dec 16 Javascript
jquery中EasyUI实现异步树
Mar 01 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
vue实现的封装全局filter并统一管理操作示例
Feb 02 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
Feb 19 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
微信小程序实现点赞业务
Feb 10 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中socket通信机制实例详解
2015/01/03 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
详解适配器在JavaScript中的体现
2018/09/28 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
创业计划书的写作技巧及要点
2014/01/31 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
家长会后的感想
2015/08/11 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
小学科学课教学反思
2016/02/23 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL