Javascript Immer NaN:NaN:NaN
Ich mache eine website, wo, wenn ein Benutzer sich anmeldet, erhält der Benutzer eine bestimmte logout-Zeit, wo die logout-Zeit ist definiert und die timeleft ist gewonnen aus der logout-Zeit - server Zeit.
Ich habe bereits die logout-Zeit und die Zeit-server über PHP, aber ich möchte die Zeit anzeigen Links dynamisch daher, die Javascript erfordern. Ich habe versucht, mit folgenden code:
function timerStart(arg1, arg2){
var counter = setInterval(function() {getTimeLeft(arg1,arg2); }, 1000);
}
function getTimeLeft(arg_endtime, arg_currenttime){
var endtime = new Date(arg_endtime);
var curtime = new Date(arg_currenttime);
var timeleft = new Date(endtime - curtime); //endtime - curtime;
tlHours = timeleft.getHours();
tlMinutes = timeleft.getMinutes();
tlSeconds = timeleft.getSeconds();
document.getElementById("timeleft").value = tlHours + ":" + tlMinutes + ":" + tlSeconds;
}
Wo arg1 's Wert ist" 2011:10:11 17.30.00' und arg2 Wert ist '2011:10:11 15:55:31' als string (ja, Sie sind in einem anderen format). Aber als ich versuchte, die oben genannten codes, die ich bekommen NaN:NaN:NaN. Ich bin sehr neu in Javascript (3 Tage) und versuchen aufzuholen, eine Frist, so dass eine ausführliche Erklärung sehr dankbar.
- wie nennst du
timerStart
? - Ich rief per onLoad auf dem Körper Teil. James Wisemen ' s scheint mein problem zu lösen, aber ich spürte, dass mein code nicht dynamisch, tja..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Format der
Date()
Funktion ist sehr spezifisch.Ich habe verspottet, bis es hier: http://jsfiddle.net/PtGxk/
Wie Sie sehen können Ihre Termine '/'getrennt und Ihre Zeiten ':'-seprated, ist alles ok.
ist '2011:10:11 17.30.00' und arg2 Wert ist '2011:10:11 15:55:31' änderung
ist '2011/10/11 17:30:00" und arg2 Wert ist '2011/10/11 15:55:31' ??
http://jsfiddle.net/8XF3F/7/
NaN in Javascript bedeutet "Keine Zahl", so dass Sie wahrscheinlich haben, eine Berechnung, die die erzeugte keine zahlen (wie bei javascript auch oft nicht, werfen Sie ein Fehler sein, aber geht gerade auf). Sie sollten versuchen, herauszufinden, welche Werte endTime und curTime tatsächlich haben, indem Sie entweder breakpointing oder Konsole.melden Sie es.
Meine Vermutung ist, dass JavaScript ist
Date
Objekt nicht wie das format, das Sie auf der Durchreise sind es. Von MDN:Jedoch der Konstruktor ist überladen, akzeptieren eine Reihe von verschiedenen Methoden der Lieferung das Datum. Wenn ich es mache, würde ich die Verwendung UNIX-Zeit, multipliziert mit 1000, um es in Millisekunden, das ist einfach, um aus PHP, in PHP und JavaScript, mehr intuitiv, wenn Sie arithmetische Operationen auf Sie.