gpt4 book ai didi

javascript - 展开/折叠菜单根本不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 22:24:24 25 4
gpt4 key购买 nike

我正在尝试使用 javascript 创建展开/折叠菜单。结构是这样的。

.menu
.subItem
.subItem

这是CSS的一部分

ul.menu {
display: none
}

但菜单项不会从折叠中展开

这是js文件

window.onload = initAll;

function initAll() {
var allLink = document.getElementsByTagName("a");
for (var i = 0; i < allLink.length; i++) {
if (allLink[i].className.indexOf("menuLink") > -1) {

allLink[i].onclick = togle;
}

}
}

function togle() {
var startMenu = this.href.lastIndexOf("/") + 1;
var stopMenu = this.href.lastIndexOf(".");
var thisMenuName = this.href.substring(startMenu, stopMenu);

var thisMenu = document.getElementById(thisMenuName).style;

if (thisMenu.display == "block") {
thisMenu.display = "none";
} else {
thisMenu.display = "block";
}
return false;
}

当我打开 chrome 开发者工具时,我意识到有人指出此行单击菜单一次

var thisMenu = document.getElementById(thisMenuName).style;

我又做错了什么

@Edit:我忘了添加html文件

<link rel="stylesheet" href="css.css">
<script src="js.js"></script>

a
</head>
<body>
<div>
<a href="" class="menuLink">trajedi</a>
<ul class="menu" id="menu1">
<li><a href="">deneme</a></li>
<li><a href="">deneme</a></li>
</ul>
</div>

最佳答案

我不知道你试图用 togle 函数中的子字符串部分做什么。这是您的代码的唯一问题。更改行:

var thisMenu = document.getElementById(thisMenuName).style;

var thisMenu = document.getElementById('menu1').style;

它会起作用的。看一看:

    window.onload = initAll;

function initAll() {
var allLink = document.getElementsByTagName("a");
for (var i = 0; i < allLink.length; i++) {
if (allLink[i].className.indexOf("menuLink") > -1) {
allLink[i].onclick = togle;
}
}
}

function togle(e) {
// can't understand the use of the 3 lines below:
var startMenu = this.href.lastIndexOf("/") + 1;
var stopMenu = this.href.lastIndexOf(".");
var thisMenuName = this.href.substring(startMenu, stopMenu);

var thisMenu = document.getElementById('menu1').style;

if (thisMenu.display == "block") {
thisMenu.display = "none";
} else {
thisMenu.display = "block";
}
return false;
}
    ul.menu {
display: none
}
<div>
<a href="" class="menuLink">trajedi</a>
<ul class="menu" id="menu1">
<li><a href="">deneme</a></li>
<li><a href="">deneme</a></li>
</ul>
</div>

您的代码的一个更简单和现代的版本是:

function initAll() {    
Array.from(document.getElementsByTagName("a"))
.filter((link)=>link.className.indexOf("menuLink") > -1)
.forEach((link)=>link.onclick = ()=>{
var thisMenu = document.getElementById('menu1').style;
thisMenu.display = (thisMenu.display == "block") ? 'none' : 'block';
return false;
});
}
window.onload = initAll;
ul.menu {
display: none
}
<div>
<a href="" class="menuLink">trajedi</a>
<ul class="menu" id="menu1">
<li><a href="">deneme</a></li>
<li><a href="">deneme</a></li>
</ul>
</div>

关于javascript - 展开/折叠菜单根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51988321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com