简单实现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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
javascript 另一种图片滚动切换效果思路
Apr 20 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
Jquery读取URL参数小例子
Aug 30 Javascript
javascript Event对象详解及使用示例
Nov 22 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
javascript清空table表格的方法
May 14 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
Nov 01 Javascript
写给vue新手们的vue渲染页面教程
Sep 01 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 Javascript
js实现简单页面全屏
Sep 17 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实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
微信红包随机生成算法php版
2016/07/21 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
Vue实现页面添加水印功能
2019/11/09 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Django中create和save方法的不同
2019/08/13 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
商务助理求职信范文
2014/04/20 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
公司晚会主持词
2019/04/17 职场文书