作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个垂直选项卡,但列表项应该单独连接到 div。所有的 div 都隐藏了 display: none;当有人点击例如 tab2 时,第二个 div 应该变成显示: block 。换句话说,className“selected”将被添加到那个特定的 div。在 console.log 中出现以下错误(无法读取 HTMLUListElement 处的 null 属性“classList”。)。这里的任何人都知道如何编写 JavaScript,以便将列表项连接到 div。
请仅使用纯 JavaScript。
document.getElementById("verticalUl").addEventListener("click", function(e) {
var e = e || window.event,
elements = document.getElementById("verticalUl").children,
content = document.querySelectorAll(".support-box");
if(e.target && e.target.nodeName == "LI") {
var attribute = e.target.getAttribute("id");
for(var i = 0; i < elements.length; i++) {
elements[i].classList.remove("active-support");
}
for (var i = 0; i < content.length; i++) {
content[i].classList.remove("selected");
};
document.querySelector("." + attribute + "-box").classList.add("selected");
e.target.classList.add("active-support");
}
});
.group {
display: none;
}
.selected {
display: block;
}
.vertical-navbar {
float: left;
width: 20%;
}
.vertical-navbar li {
list-style-type: none;
border: 1px solid red;
margin: 5px;
}
.support-box {
width: 60%;
float: right;
height: 300px;
border: 1px solid red;
}
<ul class="vertical-navbar" id="verticalUl">
<li id="tab1" class="support-tabs-label active-support">Hot Topics</li>
<li id="tab2" class="support-tabs-label">Account</li>
<li id="tab3" class="support-tabs-label">Product</li>
<li id="tab4" class="support-tabs-label">Order and Shipping</li>
</ul>
<div class="content-support1 support-box tab1-box group selected">
Hot Topics
</div>
<div class="content-support2 support-box tab2-box group">
Account
</div>
<div class="content-support3 support-box tab3-box group">
Product
</div>
<div class="content-support4 support-box tab4-box group">
Order and Shipping
</div>
最佳答案
假设所有的support-box
元素都有tabx-box
,其中tabx
匹配被点击的li
元素,你可以简单地使用:
document.querySelector("." + attribute + "-box").classList.add("selected");
解决方案
document.getElementById("verticalUl").addEventListener("click", function(e) {
var e = e || window.event,
elements = document.getElementById("verticalUl").children,
content = document.querySelectorAll(".support-box");
for (var i = 0; i < content.length; i++) {
content[i].classList.remove("selected");
}
if (e.target && e.target.nodeName == "LI") {
var attribute = e.target.getAttribute("id");
for (var i = 0; i < elements.length; i++) {
elements[i].classList.remove("active-support");
}
e.target.classList.add("active-support");
document.querySelector("." + attribute + "-box").classList.add("selected");
}
});
关于javascript - 如何将列表项连接到 div 元素 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575988/
我是一名优秀的程序员,十分优秀!