简单实现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 私有成员分析
Jan 13 Javascript
动态加载js、css等文件跨iframe实现
Feb 24 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
JQuery实现动态操作表格
Jan 11 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 Javascript
详解webpack的配置文件entry与output
Aug 21 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
Sep 26 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
JavaScript实现单点登录的示例
Sep 23 Javascript
原生js实现照片墙效果
Oct 13 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
php+mysql数据库查询实例
2015/01/21 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
python如何将图片转换为字符图片
2020/08/19 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
python和c语言哪个更适合初学者
2020/06/22 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
python创建文本文件的简单方法
2020/08/30 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
校友会欢迎辞
2014/01/13 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android