简单实现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 replace方法与正则表达式
Feb 19 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
Bootstrap被封装的弹层
Jul 20 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
HTML5+jQuery实现搜索智能匹配功能
Mar 24 jQuery
JavaScript实现分页效果
Mar 28 Javascript
Vuex 入门教程
Jan 10 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
Feb 01 Javascript
小程序实现列表删除功能
Oct 30 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
Python ljust rjust center输出
2008/09/06 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python中常见的数据类型小结
2015/08/29 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
django文档学习之applications使用详解
2018/01/29 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
python怎么判断模块安装完成
2020/06/19 Python
python能否java成为主流语言吗
2020/06/22 Python
css3学习心得分享
2013/08/19 HTML / CSS
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
Linux常见面试题
2013/03/18 面试题
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
后勤个人工作总结
2015/02/28 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python