2017-02-08 13 views
-2

私は同じクラスのdivを持っています。私はここで私はクラスがQUEを逃してい次のボタンをクリックして、同じクラスのdivを1つ1つ表示する方法は?

<ul class="tabs questiontabs"> 
    <li class="tab completed_que disabled"><a href="#questions1">1</a></li> 
    <li class="tab completed_que disabled"><a href="#questions2">2</a></li> 
    <li class="tab missedque"><a class="active" href="#questions3">3</a></li> 
    <li class="tab completed_que disabled"><a href="#questions4">4</a></li> 
    <li class="tab missedque"><a href="#questions5">5</a></li> 
    <li class="tab completed_que disabled"><a href="#questions6">6</a></li> 
    <li class="tab missedque"><a href="#questions7">7</a></li> 
    <li class="tab missedque"><a href="#questions8">8</a></li> 
</ul> 

次へ]ボタンをクリックして次のdivにクラスを追加し、前のdivのクラスを削除する必要があります。次のボタンをクリックすると、次の欠落したキューdivに移動します。

答えて

1
let next = document.getElementById('next') 
let tabs = document.getElementsByClassName('tab') 

// Add active state to first tab 
tabs[0].classList.add('tab--active') 

next.addEventListener('click', function() { 
    let active = [...tabs].filter(tab => tab.classList.contains('tab--active')) 
    let nextActive = active[0].nextElementSibling 
    active[0].classList.remove('tab--active') 
    nextActive.classList.add('tab--active') 
} 
+0

これはほとんど良いのですが、積極的には、配列を含んで、フィルタは、それを返すので、それが配列だから、次のコードでは、あなたが不可能なアクティブにclassList.removeを適用しようとしています。 'new newctive = active [0]'や 'newActive.classList.remove( 'tab-active')のような新しい変数を作ることは問題を解決するはずです。 –

+0

ああ、コール。ありがとう、素敵なコール! :) – thesublimeobject

+0

あなたがたぶん忘れてしまったもう1つのことは、DOMエレメントに初期の 'tab-active'クラスがない場合、注意してください。アクティブは空でnextActiveはアクティブではないというエラーを返します。最初の要素の初期クラスを与えるか、それともJSによって行います。 –

関連する問題