2016-06-05 2 views
-1

Я пытаюсь сбросить индикатор выполнения в викторине, как только викторина дойдет до конца.Сбросить значение строки выполнения jQuery

Если вы по ссылке ниже и:

  1. ответа вопрос
  2. Prog бар идет вверх на основе массива вопросов
  3. Quiz достигает КОНЕЦ
  4. Prog бар остается на 100%

Ссылка на рабочий код http://codepen.io/fun/pen/RRPdbb?editors=1010

раздел, который увеличивает индикатор является

progress += questions.length * 100/questions.length/questions.length; 

    if ($('#progress').val() >= 100) { 
    $('#progress').val(0); 
    } 
    $('#progress').val(progress); 

Однако это только увеличивается и не сбрасывается.

Надеюсь, что вы можете помочь, вот код.

var test_status, options, pos = 0, 
    question, optA, optB, optC, option_radio, user_guess, correct = 0, 
    progress = 0; 

var questions = [ 
    ['What is 4 * 4?', '16', '34', '18', 'A'], 
    ['What is 80/20?', '49', '4', '3', 'B'], 
    ['What is 760 - 160?', '650', '500', '600', 'C'], 
    ['What is 330 + 150?', '480', '800', '400', 'A'] 
]; 
// Function to get ids 
function _(x) { 
    return document.getElementById(x); 
}; 
// Function to ask the question 
function askQuestion() { 
    // End of quiz 
    if (pos >= questions.length) { 
    test_status.innerHTML = 'Test Complete. You scored ' + correct + ' out of ' + questions.length; 
    options.innerHTML = '<br>' + 'To attempt the quiz again' + '<br><br>' + '<button onclick = "askQuestion()"> Click here</button>'; 
    pos = 0; 
    correct = 0; 
    return false; 

    } 

    // Get position of question 
    question = questions[pos][0]; 
    // Get positions of options 
    optA = questions[pos][1]; 
    optB = questions[pos][2]; 
    optC = questions[pos][3]; 
    // Get test status id 
    test_status = _('test_status'); 
    // Get options id 
    options = _('options'); 
    // Print question stage 
    test_status.innerHTML = "<h2> You are on question " + (pos + 1) + " out of " + questions.length + "</h2>"; 
    // Print current question 
    options.innerHTML = "<h3>" + question + "</h3>"; 
    // Print options for Q 
    options.innerHTML += "<input type ='radio' name ='options' value ='A'> " + optA + "<br>"; 
    options.innerHTML += "<input type ='radio' name ='options' value ='B'> " + optB + "<br>"; 
    options.innerHTML += "<input type ='radio' name ='options' value ='C'> " + optC + "<br><br>"; 
    // Add a submit button 
    options.innerHTML += "<button onclick ='checkAnswer()'>submit</buton>"; 

}; 
// Check answer 
function checkAnswer() { 

    // Get name attr from raio 
    option_radio = document.getElementsByName('options'); 
    // loop through each radio 
    for (var i = 0; i < option_radio.length; i++) { 
    // check if option_radio is check 
    if (option_radio[i].checked) { 
     user_choice = option_radio[i].value; 
    } 
    } 
    // check is correct 
    if (user_choice == questions[pos][4]) { 
    correct++; 
    // increment progress based on questions length 
    } 
    pos++; 

    progress += questions.length * 100/questions.length/questions.length; 

    if ($('#progress').val() >= 100) { 
    $('#progress').val(0); 
    } 
    $('#progress').val(progress); 

    askQuestion(); 

}; 

askQuestion(); 

ответ

3

Это логическая ошибка. Просто установите значение перед его проверкой.

$('#progress').val(progress); 
    if ($('#progress').val() >= 100) { 
    $('#progress').val(0); 
    } 
0

Проверьте значение переменной прогресса вместо значения элемента

progress += questions.length * 100/questions.length/questions.length; 

    if (progress >= 100) { 
    $('#progress').val(0); 
    } 
    $('#progress').val(progress); 
Смежные вопросы