2017-03-04 61 views
1

在我的幻燈片中,我想在點擊時向每個分頁按鈕添加和移除活動課。我如何用原生JS做到這一點。到目前爲止我的代碼:在點擊分頁時添加活動課

//Pagination 
    var p = document.getElementById('pagination'); 
    var phtml = ''; 

    for(var i = 0; i < slides.length; i++) { 
    phtml+='<button>' + (i+1) + '</button>'; 
    } 

    p.innerHTML = phtml; // create the pagination buttons 

    var pbuttons = p.querySelectorAll('button'); // grab all the buttons 

    for(var i = 0; i < pbuttons.length; i++) { 
    pbuttons[i].onclick = (function(n) { 
    pbuttons[i].classList.toggle('active'); 

     return function(){ 
     pauseSlideshow(); 
     goToSlide(n); 
     }; 

    })(i); 
    } 
+1

您可以切換一類是這樣的:'element.classList.toggle(「類名」 );'(https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) –

+0

謝謝,斯科特。但是,如果我修改代碼以包含classList,它會將活動類添加到所有按鈕。我如何將它添加到僅點擊的按鈕並將其移除給其他人? (請參閱上面的更新代碼) – madameFerry

回答

0

試試這個:

//Pagination 
    var p = document.getElementById('pagination'); 
    var phtml = ''; 

    for(var i = 0; i < slides.length; i++) { 
    phtml+='<button>' + (i+1) + '</button>'; 
    } 

    p.innerHTML = phtml; // create the pagination buttons 

    var pbuttons = p.querySelectorAll('button'); // grab all the buttons 
    var activeButton = null; // ref to active button 

    for(var i = 0; i < pbuttons.length; i++) { 
    pbuttons[i].onclick = (function(n) { 

     return function(){ 
     if(activeButton) 
      // delete class from old active button 
      activeButton.classList.remove('active'); 

     // change ref, this is current button 
     activeButton = this; 
     // add class for new 
     activeButton.classList.add('active'); 
     pauseSlideshow(); 
     goToSlide(n); 
     }; 
    })(i); 
    } 

說明:
我們已經創建的變量至極存儲裁判活動的分頁按鈕。在點擊我們從舊的活動按鈕刪除active類,並改變裁判按鈕至極解僱單擊事件,我們再加入active類更新激活鍵

+0

嘗試解釋代碼。否則,你可能會得到一堆downvotes。 –

+0

謝謝,效果很好! – madameFerry

+0

@SagarV,更改編號與評論 – ThisMan