【发布时间】:2018-07-31 12:44:27
【问题描述】:
首先,我应该提一下,我刚接触编码世界大约 4 周,这是我第一次尝试制作(我认为会是)一个简单的网站。
我在 Stack Overflow 上看到过很多类似的问题,但在尝试调整解决方案中提供的代码示例时,解决方案将停止工作。
所以,目前的障碍是:
- 我有一个用 HTML 定义的菜单,其中一个
<li>元素(“组合”)中有一个子菜单,并且该<li>元素包含字符 ▼ (▼)。 - 我为
<li>元素设置了一个onclick事件,这样当它被点击时,它会做两件事:展开/显示子菜单<li>元素正下方(推动另一个<li>菜单中的元素),并将 ▼ 字符替换为 ▲ 字符 (▲)...直到再次单击<li>元素以缩小/隐藏子菜单。 - 我不确定这是否重要,但此菜单位于网格项内,因为该页面是使用 CSS Grid 设置的。
所以基本上:
- 首页
- 关于我们
- 作品集 ▼
- 信息
- 联系方式
...会变成:
- 首页
- 关于我们
- 组合 ▲
- 链接 1
- 链接 2
- 链接 3
- 信息
- 联系方式
无论我如何设置类和 ID,我都无法交换箭头符号,并且在某处,我搞砸了编码,现在子菜单甚至不再展开。
这可能是令人尴尬的糟糕代码(考虑到我试图将我见过的样本中的位混合在一起),但这就是我所拥有的。提前致谢。
var arrowstring = document.getElementById("arrowdirection").innerHTML;
document.getElementById("IDforPortfolioLink").classList.toggle("show");
if (IDforPortfolioLink.classList.contains('show')) {
arrowstring = "▲"
} else {
arrowstring = "▼"
}
arrowdirection.textContent = arrowstring;
}
.sub-menu-content {
display: none;
position: absolute;
}
.sub-menu-content a {
display: block;
}
.sub-menu-content a:hover {
background-color: green;
}
.show {
display: block;
}
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About us</a></li>
<li class="LinkForPortfolio" id="IDforPortfolioLink" onclick= "myFunction()"><a href="#">LINK <span class="arrow" id= "arrowdirection">▼</span></a><div class="sub-menu-content" id="myportfolio">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
</div>
</li>
<li><a href="#">Information</a></li>
<li><a href="#">Contact</a></li>
</ul>
</body>
</html>
【问题讨论】:
标签: javascript menu onclick html-lists innerhtml