简单实现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 相关文章推荐
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
Mar 25 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
Mar 02 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
实现vuex原理的示例
Oct 21 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函数
2006/12/06 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Python 修改列表中的元素方法
2018/06/26 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
最新自我评价范文
2013/11/16 职场文书
法律专业推荐信范文
2013/11/29 职场文书
社区食品安全实施方案
2014/03/28 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
班级文化标语
2014/06/23 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
社会实践单位意见
2015/06/05 职场文书
python glom模块的使用简介
2021/04/13 Python
MySQL 时间类型的选择
2021/06/05 MySQL
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python