2017-04-15 3 views
0

Ich versuche eine CountDown Uhr mit JQuery zu beenden. Evrything funktioniert gut, außer dem letzten Teil, wo ich so tun, um die Seite zu machen neu zu laden, wenn der Countdown 0 erreicht Dies ist, was ich habe:JQuery: Seite neu laden, wenn Countdown Null erreicht

1- Zuerst habe ich den Container Kreta:

var iDiv = document.createElement('div'); 
iDiv.id = 'countdown'; 
iDiv.className = 'countdown'; 

2- Nun ist die Uhr

// Countdown Clock JQuery 
function startTimer(duration, display) { 
    var timer = duration, minutes, seconds; 
    setInterval(function() { 
     minutes = parseInt(timer/60, 10); 
     seconds = parseInt(timer % 60, 10); 
     minutes = minutes < 10 ? "0" + minutes : minutes; 
     seconds = seconds < 10 ? "0" + seconds : seconds; 
     display.text(minutes + ":" + seconds); 
     if (--timer < 0) { 
      timer = duration; 
     } 
    }, 1000); 
} 
// JQuery function 
jQuery(function ($) { 
    var fiveMinutes = 60 * 5, 
     display = $('#countdown'); 
    startTimer(fiveMinutes, display); 
    if (fiveMinutes === 0) { 
      location.reload(); 
     } 
}); 

Nun, alles funktioniert gut, aber das letzte Stück:

if (fiveMinutes === 0) { 
    location.reload(); 
    } 

Die Seite wird beim Countdown nicht neu geladen und erreicht Null. Irgendwelche Ideen?

Antwort

0

Sie können es durch setTimeout nachladen:

// JQuery function 
jQuery(function ($) { 
    var fiveMinutes = 60 * 5, 
     display = $('#countdown'); 
    startTimer(fiveMinutes, display); 
    setTimeout(function(){ location.reload() }, fiveMinutes*1000); 
}); 
+0

Vielen Dank, das war ein viel eleganterer Weg als die Lösung, die ich erreicht habe. Ich fügte einen weiteren Var hinzu, der darauf wartete, dass der Zähler 0 (00:00) erreichte, und obwohl es funktionierte, war es nur ein hässlicher Patch. var abgelaufen = window.setInterval (function() { if ($ ("*: contains ('00: 00')") Länge> 0) { document.location.reload (true);} . }, 1000); –

+0

@ KimJong-un, dass Ihr Problem löst? –

0

Der Ist die Bedingung nur einmal ausgeführt wird, während der erste Skript ausgeführt wird. An diesem Punkt ist die Variable funfMinutes 60 * 5 (300) und entspricht nicht der Bedingung == 0.

// JQuery function 
jQuery(function ($) { 
    var fiveMinutes = 60 * 5, 
     display = $('#countdown'); 
    startTimer(fiveMinutes, display); 
    if (fiveMinutes === 0) { 
     location.reload(); 
    } 
}); 

Sie müssen prüfen, ob der Timer auf 0 in der ausgeführt wird;

setInterval(function() { 
    minutes = parseInt(timer/60, 10); 
    seconds = parseInt(timer % 60, 10); 
    minutes = minutes < 10 ? "0" + minutes : minutes; 
    seconds = seconds < 10 ? "0" + seconds : seconds; 
    display.text(minutes + ":" + seconds); 
    if (--timer < 0) { 
     timer = duration; 
    } 
}, 1000); 

Funktion so wird die Zustandsüberprüfung innerhalb des Timer-Wert-Updates ausgeführt.

Hoffentlich hilft das.

Verwandte Themen