2017-03-06 8 views
0

Ich habe ein Skript, Countdowns Timestamp. Es funktioniert gut, aber das Problem, es läuft weiter als 0 in den negativen Bereich. Ich möchte, dass es bei null stoppt.Zeitstempel Countdown im negativen

// $nowtime is a date in future 
 
var startLive = new Date("<?php echo $nowtime; ?>"); 
 
var timestamp = startLive - Date.now(); 
 

 
timestamp /= 1000; // from ms to seconds 
 

 
function component(x, v) { 
 
    return Math.floor(x/v); 
 
} 
 

 
var $div = $('.time'); 
 

 
timer = setInterval(function() { 
 

 
    timestamp--; 
 

 
    var days = component(timestamp, 24 * 60 * 60), 
 
    hours = component(timestamp, 60 * 60) % 24, 
 
    minutes = component(timestamp, 60) % 60, 
 
    seconds = component(timestamp, 1) % 60; 
 

 
    $div.html(days + " days, " + hours + ":" + minutes + ":" + seconds); 
 

 

 
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

Ausgabe sieht aus wie 1 Tag, 6:10:30

Problem ist, wenn es kleiner als Null ist es in negativ wird nach wie vor. so etwas wie -3 Tage, -3: -5: -5

Wie bei 0.

Dank zu stoppen.

Antwort

1
timer = setInterval(function() { 

    /* if timestamp <= 0 return means skip rest of function */ 
    if(timestamp <= 0) { 
     clearInterval(timer); 
     return; 
    } 

    timestamp--; 

    var days = component(timestamp, 24 * 60 * 60), 
     hours = component(timestamp,  60 * 60) % 24, 
     minutes = component(timestamp,   60) % 60, 
     seconds = component(timestamp,   1) % 60; 

    $div.html(days + " days, " + hours + ":" + minutes + ":" + seconds); 


}, 1000); 
+0

Dank. Arbeiten. Ich habe es selbst versucht, aber vergessen, wieder zurück zu kommen :) – Phoenix

+0

@Phoenix du bist willkommen! Bitte vergiss nicht, als akzeptiert zu markieren – caramba

+0

Eigentlich solltest du das Intervall mit 'clearInterval (timer) löschen; 'anstatt nur zurückzukehren, ansonsten wird das Intervall immer noch im Hintergrund aufgerufen. Wenn Sie ein 'console.log ('etwas')' in Ihrer if-Anweisung und vor der Rückkehr hinzufügen, werden Sie sehen, dass das Intervall noch immer aufgerufen wird. –

0
if(timestamp <= 0) 
{ 
clearInterval(timer); 
} 
+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! – kayess