2016-06-30 14 views
3

Ich bin ziemlich neu mit JavaScript und ich würde gerne eine automatische Hintergrund-Changer mit zeitgesteuerten Intervallen und CSS-Klassenänderungen machen. Momentan läuft mein Code nicht wie geplant zwei Hintergründe. Kannst du mal nachsehen, was damit nicht stimmt?JavaScript - Hintergrund ändern mit CSS-Klasse und setInterval-Methode

Danke!

$(document).ready(function() { 

    var switcher = 0; 

    var counter = setInterval(count, 2000); 

    function count() { 
    switcher = switcher + 1; 
    if (switcher >= 2) { 
     switcher = 0; 
     return; 
    }; 
    }; 


    switch (switcher) { 

    case 0: 
     $("#main-content").removeClass("background1"); 
     $("#main-content").addClass("background3"); 
     break; 

    case 1: 
     $("#main-content").removeClass("background3"); 
     $("#main-content").addClass("background1"); 
     break; 


    }; 
}); 
+0

Bewegen Sie den 'Schalter 'Block in die 'count()' Funktion ... Übrigens, Ihr aktueller Inkrement und wenn Test kann durch 'switcher = (Switcher + 1)% 2' ersetzt werden. Wenn es nur zwei mögliche Optionen gibt, können Sie einfach einen booleschen Wert verwenden. – nnnnnn

+0

Add HTML-Snippet .. – DiniZx

+0

Können Sie jsfiddle für das gleiche erstellen? – DiniZx

Antwort

0

Verschieben switch() Anweisung in Intervallfunktion Rückruf. Entfernen Sie auch return.

function count() { 
    switcher = switcher + 1; 
    if (switcher >= 2) { 
     switcher = 0; 
    }; 
    switch (switcher) { 

     case 0: 
      $("#main-content").removeClass("background1"); 
      $("#main-content").addClass("background3"); 
      break; 

     case 1: 
      $("#main-content").removeClass("background3"); 
      $("#main-content").addClass("background1"); 
      break; 
    }; 

}; 
+0

Funktioniert wie ein Charme! Vielen Dank! – canyin

1

Warum nicht toggleClass verwenden, ist es viel sauberer:

$(function() { 
    var switcher = 0; 
    var counter = setInterval(count, 2000); 

    function count() { 
     $("#main-content").toggleClass("background1 background3") 
    }; 
}); 

So stellen Sie sicher, dass Sie eine Standard-Klasse dem div zuweisen:

<div id="main-content" class="background1"> 

</div> 
Verwandte Themen