简单实现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高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
JS制作简单的三级联动
Mar 18 Javascript
详解js的异步编程技术的方法
Feb 09 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
javascript实现切割轮播效果
Nov 28 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
JavaScript 中for/of,for/in 的详细介绍
Nov 17 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扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
jquery.validate使用详解
2016/06/02 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python实现爬取逐浪小说的方法
2015/07/07 Python
神经网络python源码分享
2017/12/15 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
Python3远程监控程序的实现方法
2019/07/15 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
黄河象教学反思
2014/02/10 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
nginx 配置指令之location使用详解
2022/05/25 Servers