简单实现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的滑动样例代码
Nov 20 Javascript
JQuery AJAX 中文乱码问题解决
Jun 05 Javascript
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
webstorm添加vue.js支持的方法教程
Jul 05 Javascript
Vue递归实现树形菜单方法实例
Nov 06 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
Jul 18 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
Apr 10 Javascript
浅谈es6中的元编程
Dec 01 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
MVC模式的PHP实现
2006/10/09 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
dojo 之基础篇
2007/03/24 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
JSONP跨域请求
2017/03/02 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python中使用支持向量机SVM实践
2017/12/27 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
实例介绍Python中整型
2019/02/11 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
华为C++笔试题
2014/08/05 面试题
某公司部分笔试题
2013/11/05 面试题
品质主管的岗位职责
2013/12/04 职场文书
中学家长会邀请函
2014/02/03 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
Python绘画好看的星空图
2022/03/17 Python