我基本上试图关闭所有的手风琴,只保持其中一个被点击。
因此,在短期内,只保持一个标签打开。
这是我到目前为止所做的:
https://jsfiddle.net/gymzfg9r/2/
这是javascript:
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
有人可以就此提出建议吗?
答案 0 :(得分:1)
为其他人插入代码:
this.classList.toggle("active");
var arr = document.getElementsByClassName("show");
for (j = 0; j < arr.length; j++) {
if(this.nextElementSibling != arr[j])
arr[j].classList.toggle("show");
}
this.nextElementSibling.classList.toggle("show");
答案 1 :(得分:1)
这样做了,但我很确定这是一种可怕的方式来做到这一点,现在不能回想一个更好的方法
var acc = document.getElementsByClassName("accordion");
var i;
function closeEverything() {
var openElements = document.getElementsByClassName("active");
if(openElements.length) {
for(var i = 0; i < openElements.length; i++) {
openElements[i].nextElementSibling.classList.toggle("show");
openElements[i].classList.toggle("active");
}
}
}
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function(){
if(this.classList.contains('active')) {
this.classList.toggle('active');
this.nextElementSibling.classList.toggle('show');
} else {
closeEverything();
this.classList.toggle("active");
this.nextElementSibling.classList.toggle("show");
}
}
}