1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 利用JavaScript实现下拉菜单

利用JavaScript实现下拉菜单

时间:2022-03-14 23:49:57

相关推荐

利用JavaScript实现下拉菜单

实现效果:点击父级标题时下拉菜单会出现,同时其他已下拉的菜单会闭合。再次点击当前打开的父级菜单时,闭合。

CSS:

* {margin: 0;padding: 0;}li {list-style-type: none;}a {text-decoration: none;}#list {width: 300px;margin: 50px;font-weight: 700;}#list li {overflow: hidden;height: 40px;transition: 1s;}#list li p.tit {height: 40px;background-color: #000;line-height: 40px;color: #fff;}#list li p {height: 30px;background-color: #ff0;border-bottom: 1px solid;color: #000;}#list .show {height: 134px;}

HTML:

<ul id="list"><li><p class="tit">0点击标题</p><p>2222</p><p>2222</p><p>2222</p></li><li><p class="tit">1点击标题</p><p>2222</p><p>2222</p><p>2222</p></li><li><p class="tit">2点击标题</p><p>2222</p><p>2222</p><p>2222</p></li></ul>

JS:

以下罗列了三种方法,其中一二种方法在注释里,但是点击父级标题不能闭合。

第三种方法是给父级标题做了一个开关。

主要是利用更换class类名来设定li标签的隐藏与否。

let aLi = document.querySelectorAll("#list li")let aTit = document.getElementsByClassName("tit")let len = aLi.length;console.log(aLi, aTit);/* for (let i = 0; i < len ; i++) {aTit[i].onclick = function () { //1for (let j = 0; j <= len - 1; j++) {aLi[j].className = ""}aLi[i].className = "show" //1}} */// 存 上一次 元素的下标 /* let index = 0 //0for (let i = 0; i <len ; i++) {aTit[i].onclick = function () { //i= 0aLi[index].className = ""; //aLi[2].className = "";index = i //index => 0aLi[index].className = "show"; //aLi[0].className = "show";}} */for (let i = 0; i < len ; i++) {aTit[i].bool = true; //关闭状态 可以被点击打开 给每一个对象 存一下 状态aTit[i].onclick = function () {if (aTit[i].bool) { //正关闭 可被打开aLi[i].className = "show";} else {// 已打开 可被关闭aLi[i].className = "";}aTit[i].bool = !aTit[i].bool;for (let j = 0; j < len; j++) { // 0 1 2 falee if (j !== i && aTit[j].bool === false) { //目的 清空 已经被打开的 li 并且不能 清空 我当前点击的这个li aLi[j].className = ""; //关闭aTit[j].bool = true;}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。