2016-07-01 16 views
-1

Ich habe eine Timer-Funktion (es berechnet, wie viele Wörter in gegebener Zeit gelesen wurden, aber mein Code funktioniert nicht (es heißt "Uncaught ReferenceError: startTime ist nicht definiert" on line "testTime = (Stoptime - Startzeit)/1000 + testTime;“)console.log gibt undefined für eine Variable

HTML

<button class="btn" id="start">Start Reading</button> 
    <div id="page1" style="display: block;"><p class="title"> 
    Text goes here 
</div> 
    <button class="btn" id="stop">Finished!</button> 
    <span id="wordValue"></span> 
    <span id="timeValue"></span> 

JAVASCRIPT

function runTest(){ 

testRunning = false; 
restart = false; 
var testTime = 0; 

jQuery('#start').click(function(){ 
    startTime = new Date().getTime(); 
    testRunning = true; 
}); 

    jQuery('#stop').click(function(){ 

    stopTime = new Date().getTime(); 
    testTime = (stopTime - startTime)/1000 + testTime; 


    testRunning = false; 
    // set wpm = calculated words per minute 
    wpm = Math.round(wordCount('#page1')/(testTime/60)); 
    // set difference = calculated difference between words per minute and  national average (250) 
    difference = Math.round(100*((wpm/250)-1)); 
    if (difference < 0) { 
     difference = difference*-1 + '% slower'; 
    } else { 
     difference = difference+'% faster'; 
    } 
    }); 
+0

Nein, Sie nicht wirklich. Das ist Javascript. –

+0

Es ist kein Scope-Problem, oder? Versuchen Sie dies außerhalb der Funktion 'startTime = new Date(). getTime();' –

+0

Das Hauptproblem ist, dass StartTime im Bereich der Start-Event-Funktion definiert ist und nicht von der Stop-Event-Funktion gesehen werden kann. Sie müssen 'var startTime = 0' nach dem var testTime = 0 Zeile hinzufügen –

Antwort

0

Ran dies auf jsfiddle und es funktionierte gut:

https://jsfiddle.net/d3eqmbv5/

hatte einfach zu entfernen:

zu Testzwecken
function runTest(){ 

Und ich habe eine gefälschte wordCount Funktion.

0

Es gibt eine fehlende Klammer zuerst, wenn Sie dieses jsfiddle und Band F12 betrachten, also was kann der folgende Schritt sein? die Funktion direkt nach oder am Ende des kompletten Codeblocks ausschalten?

function runTest(){ 
    testRunning = false; 
    restart = false; 
    var testTime = 0; 

https://jsfiddle.net/qugp3fot/

1

Ich denke, Startzeit nicht definiert ist, weil es sich um eine lokale Variable jQuery ('# start') ist. Klicken. Versuchen Sie define startTime oben

var testRunning = false; 
var restart = false; 
var testTime = 0; 
var startTime = 0; // here 
Verwandte Themen