이 작업을 수행하는 데 어려움이 있습니다.순수 자바 스크립트를 사용하여 다른 버튼을 클릭하면 클래스에서 버튼을 제거하는 방법
응답 성있는 탭/아코디언이 있습니다. 그러나 하나의 버튼을 클릭하면 "활성"클래스가 적용되지만 다른 버튼을 클릭하면 "활성"클래스가 이전 버튼에 남아 있습니다. jQuery가 아니라 Javascript를 사용하여이 작업을 수행해야합니다.
"Uncaught TypeError : HTMLButtonElement에서 정의되지 않은 의 속성 'remove'을 읽을 수 없습니다."라는 오류 메시지가 나타납니다.
var accordion = document.getElementsByClassName("accordion");
var activeAccordion = document.getElementsByTagName("button");
var i;
for (i = 0; i < accordion.length; i++) {
accordion[i].addEventListener("click", function(){
this.classList.toggle("active");
activeAccordion.classList.remove("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
})
}
'activeAccordion'가 _nodelist_이며 자신의없는'classList에 의해 교체 : 여기
순간에 내 코드입니다 '메소드를 호출합니다. 따라서 클래스를 제거하는 목록의 모든 노드를 반복해야합니다. – Andy루프의 activeAccordion은 요소 목록입니다. 시도해보십시오. activeAccordion [0] .classList.remove ("active"); –
여전히 위의 해결 방법과 동일한 작업을 수행하지만 다른 아코디언/탭은 다른 하나를 클릭 할 때 열어 두었습니다. – ImranR