2017-04-10 2 views
2

Ich habe diesen Code:new Date() gibt undefined

function submit(){ 
//Some stuff here... 

clicked= false 

//Some stuff here... 

function start() { 
    var starttime; 
    if(clicked===false) 
    { 
     document.getElementById("start").innerHTML = "Submit"; 
     starttime = new Date(); 
     document.getElementById("title").innerHTML = "<b>...</b>"; 
     clicked=true; 
    } else { 
     var endtime = new Date(); 
     var timediff = endtime - starttime; 
     alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime); 
     submit(); 
    } 
} 

TIMEDIFF immer wieder NaN. Wenn ich typeof verwende, ist Startzeit undefiniert, Endzeit ist ein Objekt und Zeitdifferenz ist eine Zahl. Warum? Gibt es eine Lösung? Dank

+0

Define 'var starttime;' außerhalb der Funktion – Satpal

+0

Sie ist innerhalb des Funktionsumfangs definiert; Beim zweiten Mal wird "Start" aufgerufen, es hat keinen Wert. Verschieben Sie die Deklaration ähnlich wie "angeklickt" in den enthaltenden Bereich – pinkfloydx33

Antwort

1

Sie müssen für diese Startzeit global machen, um zu arbeiten: Objekt

clicked= false; 
var starttime; 

//Some stuff here... 

function start() { 

    if(clicked === false) { 
     document.getElementById("start").innerHTML = "Submit"; 
     starttime = new Date(); 
     document.getElementById("title").innerHTML = "<b>...</b>"; 
     clicked=true; 
    } else { 
     var endtime = new Date(); 
     var timediff = endtime - starttime; 
     alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime); 
     submit(); 
    } 
} 
0

Verwenden getTime Funktion auf dem Datum den Unterschied

function submit(){ 
//Some stuff here... 

clicked= false 

//Some stuff here... 

function start() { 
    var starttime; 
    if(clicked===false) 
    { 
    document.getElementById("start").innerHTML = "Submit"; 
    starttime = new Date(); 
    document.getElementById("title").innerHTML = "<b>...</b>"; 
    clicked=true; 
    } else { 
    var endtime = new Date(); 
    var timediff = endtime.getTime() - starttime.getTime(); 

    submit(); 
} 
} 
0

Sie haben endtime als Objekt zu erhalten weil new Date() eins zurückgibt. Sie können new Date(). GetTime() verwenden, um die Anzahl der Millisekunden zwischen Mitternacht des 1. Januar 1970 und dem angegebenen/aktuellen Datum zurückzugeben.

startTime ist nicht definiert, weil Sie es nicht initialisiert haben. Wenn der else-Block also ausgeführt wird, ist sein Wert nicht definiert. Also ich hoffe das löst dein Problem.

function submit(){ 
//Some stuff here... 

var starttime = new Date().getTime(); 
var clicked = false 

//Some stuff here... 

function start() { 

    if(clicked===false) 
    { 
     document.getElementById("start").innerHTML = "Submit"; 
     //starttime = new Date(); 
     document.getElementById("title").innerHTML = "<b>...</b>"; 
     clicked=true; 
    } else { 
     var endtime = new Date().getTime(); 
     var timediff = endtime - starttime; 
     alert(typeof endtime + typeof starttime + typeof timediff + timediff + endtime + starttime); 
     submit(); 
    } 
} 

Yon kann immer Startzeit und endTime in Datumszeichenfolgen konvertieren, indem sie als Argumente für new Date() und mit einer der Konvertierungsmethoden übergeben.

new Date(1491813677908).toString(); 
new Date(1491813677908).toLocaleString(); 

Vorsicht.

0
  1. Need Funktion
  2. beginnen zu rufen geklickt Variable falsch so ausgeführt wird, wenn (=== falsch geklickt) blockieren
  3. Making wahr geklickt wird nicht Startzeit

    function submit(){ 
        var clicked= true; 
    
    function start() { 
        var starttime = new Date(); 
        if(!clicked) 
        { 
         alert("When clicked is : "+clicked); 
         alert(starttime); 
         clicked=true; 
        } else { 
         alert("When clicked is : "+clicked) 
         var endtime = new Date(); 
         var timediff = endtime - starttime; 
         /* 
         alert(typeof starttime); 
         alert(typeof endtime); 
         alert(typeof timediff); 
         */ 
         alert("starttime "+starttime); 
         alert("endtime "+endtime); 
         alert("timediff "+timediff); 
        } 
        } 
        start(); 
    } 
    submit(); 
    
instanziiert

Hoffe, diese Lösung wird Ihnen helfen ...

0

Für diese bitte dez lare beiden Variable außerhalb der Funktion

clicked= false 

var starttime; 

und es wird wie folgt aussehen:

clicked= false; 

var starttime; 

function start() 
{ 

//your code 

} 

Rest des Code in Ordnung ist.

Verwandte Themen