最简单的纯js实现点击展开二级菜单功能

最简单的纯js实现点击展开二级菜单功能虽然,jQuery已经非常好用了,但是实际的开发项目中,还是有很多限制,比如项目组奇葩的要求,不能使用任何插件,当然,也是考虑插件占用资源,毕竟100+KB对与小型项目来说还是非常大的。我最近就遇到做个点击展开二级菜单的要求,当然只能用原生的JS去写来实现,我借鉴了网上的一个案例,补充一下,分享一下:如果,默认打开页面进来时二级菜单是隐藏的,需要点击才能展现二级菜单,再点击就是隐藏二级菜单。这

大家好,又见面了,我是你们的朋友全栈君。

虽然,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 οnclick="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>

仔细看,不然你就会发现你需要点击两次才会出现想要的效果。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143816.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pip 安装.whl文件「建议收藏」

    pip 安装.whl文件「建议收藏」参见网址https://www.lfd.uci.edu/~gohlke/pythonlibs/,基本上包含了常用的pythonlib各个版本。下载本机机器上的python使用的对应版本的lib,切到下载位置,使用命令(以安装matplotlib为例):pip install ./matplotlib-2.2.3-cp36-cp36m-win32.whl 即可很快完成安装…

    2022年5月29日
    82
  • 单片机 流水灯

    单片机 流水灯单片机流水灯一、简述  通过Proteus仿真单片机最小系统+流水灯的显示电路。用Keil编写相应执行文件。  源码、仿真电路图打包:链接:https://pan.baidu.com/s/1ZetoHZGz-jebnAd_BQGAUg密码:h8jc二、效果三、工程结构1、Keil编程2、仿真电路图四、源文件LiuShui.c文件#i…

    2022年5月1日
    37
  • php语言的cmpp协议应用

    php语言的cmpp协议应用因为公司网站需要移动物联卡的获取短信内容和发送短信功能 本人上网查了一下 发现几乎全是 java 语言的 只有两个文章是关于 cmpp 的 php 开发 而且只有发短信 还有问题 这里将我开发的程序贴出来 代码也有些冗余 但功能都可以使用了 我开发的应用接收短信和发送短信在不同的文件接收短信是通过 linux 服务器 screen 来执行 php 文件获取短信 发送短信是前端页面填入卡号和内容 传给后台去

    2025年6月20日
    3
  • SQL数据库之索引优缺点

    SQL数据库之索引优缺点 SQL数据库之索引使用原则及利弊 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 优点通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。  可以大大加快数据的检索速度,这也是创建索引的最主要的原因。  可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。  在使用分组和排序子句进行数据检索时,…

    2022年5月25日
    40
  • 单调队列优化的背包问题[通俗易懂]

    单调队列优化的背包问题[通俗易懂]对于背包问题,经典的背包九讲已经讲的很明白了,本来就不打算写这方面问题了。但是吧。我发现,那个最出名的九讲竟然没写队列优化的背包。。。。那我必须写一下咯嘿嘿,这么好的思想。我们回顾一下背包问题吧。01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总…

    2022年6月25日
    24
  • md 语法之表格:对齐和换行

    md 语法之表格:对齐和换行对齐下面将对齐 数量 列的元素 左对齐 md 写法 硬币 数量 五毛 3 一角 5 效果 硬币数量五毛 3 一角 5 居中 md 写法 硬币 数量 五毛 3 一角 5 效果 硬币数量五毛 3 一角 5 右对齐 md 写法 硬币 数量

    2025年9月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号