2017-12-03 6 views
0

이 작업을 수행하는 데 어려움이 있습니다.순수 자바 스크립트를 사용하여 다른 버튼을 클릭하면 클래스에서 버튼을 제거하는 방법

응답 성있는 탭/아코디언이 있습니다. 그러나 하나의 버튼을 클릭하면 "활성"클래스가 적용되지만 다른 버튼을 클릭하면 "활성"클래스가 이전 버튼에 남아 있습니다. 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"; 
    } 
    }) 
} 
+4

'activeAccordion'가 _nodelist_이며 자신의없는'classList에 의해 교체 : 여기

순간에 내 코드입니다 '메소드를 호출합니다. 따라서 클래스를 제거하는 목록의 모든 노드를 반복해야합니다. – Andy

+0

루프의 activeAccordion은 요소 목록입니다. 시도해보십시오. activeAccordion [0] .classList.remove ("active"); –

+0

여전히 위의 해결 방법과 동일한 작업을 수행하지만 다른 아코디언/탭은 다른 하나를 클릭 할 때 열어 두었습니다. – ImranR

답변

0

activeAccordion.classList.remove("active"); 

activeAccordion.classList.removeClass("active"); 
+0

불행히도 위와 같은 오류가 발생합니다. – ImranR

+0

오케이! 하지만 addclass 줄 맨 위에 제거 줄을 추가하는 것이 좋습니다 같아요. – Sonia

관련 문제