2014-03-30 4 views
0

순수 자바 스크립트로 div의 콘텐츠를 전환하려면 탭 효과를 만들고 싶습니다. 내용 내가자바 스크립트로 div 변경

  <script> 
      function changeClass(element) { 

       if (classList !=='active') { 
        element.classList.add('active'); 
       } 
       else { element.classList.remove('active'); } 
      } 
      </script> 
      <ul> 
       <li onclick = "changeClass("content")"> 
+0

왜 jquery로 시도하지 않습니까? – Shin

+1

['classList'] (https://developer.mozilla.org/en-US/docs/Web/API/Element.classList) 사용 방법을 참조하십시오. – Teemu

+0

@shijin에 동의합니다 ... jQuery는이 인스턴스에서 훨씬 쉬울 것입니다. –

답변

2

오류에서 두 번째 클래스 활성를 추가하거나 제거 할 클래스의 이름 당신이 (아무도이 잡은하지 왜 궁금) 모든 요소를 ​​선택,하지만 노력하지 않는 것입니다 문자열의 클래스 목록을 변경하려면 ("content".classList...). 먼저 적절한 요소를 선택해야합니다 : 또한

function changeClass(element) { 
    element = document.getElementsByClassName(element)[0]; // assuming here we're selecting the first one 
    if (!element.classList.contains('active')) { // had to fix this as variable classList wasn't defined 
     element.classList.add('active'); 
    } 
    else { 
     element.classList.remove('active'); 
    } 
} 

을 @Teemu는 의견 제안하지만, 그것을 쓰기 element.classList.toggle('active');를 자유롭게 사용하기를 거부한다. 그래서 전체 코드는 다음과 같아야합니다

function changeClass(element) { 
    element = document.getElementsByClassName(element)[0]; // assuming here we're selecting the first one 
    element.classList.toggle('active'); 
} 
2

단순히 toggle 둘 사이 클래스, 당신은 같은 것을 할 수있는하려면 :이 경우

function changeClass(element) { 
    element.classList.toggle('Content'); 
} 

비록 당신이 참조를 통과했습니다 클래스 이름이 아닌 요소에 적용됩니다.

+0

웃기는 어떻게 실제 오류를 해결하지 않고 +1있어. – Shomz

+0

@Shomz 나는 그것이 당신의 upvote라고 생각 :). 사실 내 답변에는 오류가있었습니다 (적어도 OP의 코드와 비교할 때). – Teemu

+0

하하, 아니, 내 게시판에 답변을 게시하지 않았으므로, 그 이유는 내가 귀하를 언급했기 때문입니다. 그래, 지금은 다 알아서 할 것 같아. 이제 저에게서 하나 있습니다. – Shomz

관련 문제