2016-11-03 4 views
-2

Ich schrieb eine prozentualKorrektur-Funktion für ein Quiz, das ich gemacht habe, aber es gibt den falschen Prozentsatz zurück, wenn ich meine Funktion anrufe. Ich habe auch einen Sekundentimer, aber ich kann nicht herausfinden, wie man die Minuten alle 60 Sekunden erhöht. Ich habe versucht, eine if-Anweisung, for-Schleife usw. zu verwenden. Hier ist mein Jquery-Code unten. Bitte helfen Sie, danke!Jquery Quiz Prozentsatz ist nicht korrekt

var minutes = 0; 
var seconds = 0; 
var intervalId; 
var correct = 0; 
var incorrect = 0; 
var timeSpent; 

$(document).ready(function(){ 
    $("#results").addClass('hide'); 
    $('#questions').addClass('hide'); 
$('#startTrivia').on('click', function(){ 
    $('#questions').removeClass('hide'); 
    startTimer(); 
}); 

$("#submit").on('click', function(){ 
    $(".jumbotron").addClass('hide'); 
    $("#questions").addClass('hide'); 
    //get the number of correct... :checked is what the user checked 
    var numberCorrect = $('input[data-correct="correct"]:checked').length; 
    var numberIncorrect = 10 - numberCorrect; 
    //puts in the html what questions were correct vs incorrect 
    $('#correct').html(numberCorrect); 
    $("#incorrect").html(numberIncorrect); 
    timeSpent = "It took you " + minutes + " minutes and " + seconds + " seconds to complete the Thanksgiving Trivia!" 
    $("#timeTaken").html(timeSpent); 
    //calculating percentage of correct answers 
    $("#totalPercent").html("You got " + percentCorrect(numberCorrect, numberIncorrect) + "% on the test!"); 
    //results will show after pushing submit 
    $("#results").removeClass('hide'); 
}); 

//timer pauses after clicking pause timer 
$("#pauseGame").on('click', function(){ 
    pauseTimer(); 
    $("#questions").addClass('hide'); 
}); 

//timer resets after clicking reset timer 
$('#restart').on('click', function(){ 
    resetGame();   
    $("#questions").addClass('hide'); 
    $("#results").addClass('hide'); 
    $(".jumbotron").removeClass('hide'); 
    //clearing the checked radio buttons 
    $("input:checked").removeAttr("checked"); 
    }); 
}); 

// NOT GIVING CORRECT PERCENTAGE? 
function percentCorrect(x, y) { 
    return Math.round((x/y)*100); 
}; 

// CAN'T FIGURE OUT HOW TO MAKE MINUTES INCREASE EVERY 60 SECONDS? 
function totalTime() { 
    seconds++; 
    $('#seconds').html(seconds);  
}; 

function pauseTimer() { 
    clearInterval(intervalId); 
}; 

function startTimer() { 
    intervalId = setInterval(totalTime, 1000); 
}; 

function resetGame() { 
    seconds = -1; 
    totalTime(); 
    this.clearInterval(intervalId); 
}; 
+0

es helfen würde, diese in zwei Fragen aufgeteilt und zeigt genau, was die Probleme mit den Berechnungen. Was sind die Eingaben? Was ist die erwartete Ausgabe? Welche Ausgabe erhalten Sie? Welche Funktion gibt den falschen Wert zurück? –

+0

Ich denke, Sie übergeben die falschen Werte an Ihre 'percentCorrect' Funktionen. "y" sollte die Gesamtzahl der Fragen sein, die ich denke. Angenommen, Sie haben 9 Fragen richtig und 1 falsch, was (9/1) * 100 = 900 wäre, während, wenn "y" die Gesamtzahl der Fragen (10) ist, wäre (9/10) * 100 = 90. – putvande

Antwort

0

Es sieht so aus, als würden Sie Ihren Prozentsatz falsch berechnen. Es sollte sein:

percentageCorrect = (totalCorrect/totalQuestions) * 100 

Auch, um die Anzahl der Minuten zu zählen:

if(seconds % 60 == 0) minutes++; 
+0

Vielen Dank, ich war so ratlos. Sekunden müssen jedoch alle 60 Sekunden auf 0 zurückgesetzt werden. Der Prozentsatz ist jetzt korrekt! Ich habe viel Zeit damit verbracht, es herauszufinden, weil die Funktionen Mathe korrekt waren. Ich habe eine Variable totalQuestions = 10, die Menge, die ich habe, und es wurde behoben. Wie setze ich Sekunden zurück? Ich habe ein paar Dinge ausprobiert, aber ich habe es noch nicht herausgefunden. –

+0

Ich habe es herausgefunden, danke nochmal für die Hilfe –