最简单的纯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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • war3辅助工具_魔兽世界修改器

    war3辅助工具_魔兽世界修改器War3tools魔兽工具完成于2012年5月,工具包含:版本转换,注册表修复,一键启动游戏,以及将网上好用的改建精灵内置其中。War3tools魔兽工具还可以将自己的工具或者魔兽对战平台加入启动项目,只需在我的工具中添加即可,操作简单,功能实用。希望War3tools魔兽工具能给您的游戏带来方便。@risingsun下载地址:http://pan.baidu.com/share/li

    2022年9月1日
    0
  • js通过contentWindow控制iframe子页面元素点击事件,并把值传给父页面[通俗易懂]

    js通过contentWindow控制iframe子页面元素点击事件,并把值传给父页面[通俗易懂]本来需要点击一个图片后,显示一个iframe上传框.点击上传,从而操作子页面中的点击上传动作,再把值传给父页面.或控制父页面中iframe元素的显示状态.不过.通过upload()函数,可以不用显示上传框了,直接激活子页面中的上传动作.另外,onchange事件则可以自动提交上传,不必用户点击上传按钮了.三步并做一步&lt;!–父页面中的上传按钮–&gt;&lt;imgsrc="…

    2022年10月19日
    0
  • webstorm下载插件_webpack 插件

    webstorm下载插件_webpack 插件2016年整理了一下自己常用的webstorm插件:webstorm常用插件集合不过毕竟现在已经2020年了,常用的插件已经发生了一些变化,重新整理一下。

    2022年9月10日
    0
  • 酒店管理系统-详细设计说明书

    酒店管理系统-详细设计说明书
    详细设计说明书1引言1.1编写目的
    本文档为**酒店管理系统详细设计说明书,为**酒店管理系统编码的主要依据。1.2背景
    本软件全称为**酒店管理系统。
    软件适用于普通二星级酒店、宾馆。 2界面功能描述2.0主界面
    系统运行主框架,实时显示房态信息。

     2.1散客开单
    完成对散客的开单任务。最多能追加五个相同类型的房间。

     2.2团体开单
    完成对团体宾客的开单任务。房间数没有限制,可同时追加不

    2022年5月12日
    44
  • linux出现e325错误,centos系统使用VI访问文件时候出现E325: ATTENTION类的错误提示处理方法…[通俗易懂]

    linux出现e325错误,centos系统使用VI访问文件时候出现E325: ATTENTION类的错误提示处理方法…[通俗易懂]错误出现情况的是,在我们用VI编辑文件时候在文件加载时候出现错误提示,需要在安任意键后才能正常编辑.错误提示类似如下:E325:ATTENTIONFoundaswapfilebythename”/etc/sysconfig/.iptables.swp”ownedby:rootdated:SunMar1209:53:432017filename:/etc/sy…

    2022年5月19日
    43
  • android常用布局详解「建议收藏」

    android常用布局详解「建议收藏」view和布局在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGr…

    2022年6月2日
    31

发表回复

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

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