简单实现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 相关文章推荐
JQUBar 基于JQUERY的柱状图插件
Nov 23 Javascript
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
Dec 18 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
echart简介_动力节点Java学院整理
Aug 11 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
在vue中使用vuex,修改state的值示例
Nov 08 Javascript
js实现图片实时时钟
Jan 15 Javascript
如何在postman中添加cookie信息步骤解析
Jun 30 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实现阳历到农历转换的类实例
2015/03/07 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
一篇.NET面试题
2014/09/29 面试题
领班岗位职责范文
2014/02/06 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
安全目标管理责任书
2014/07/25 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
环卫工人慰问信
2015/02/15 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python