Как увеличить индикатор выполнения при каждой проверке input=type['radio'] с помощью javascript?
Я делаю приложение для викторины, используя django, но я застрял на javascript.
Я хочу, чтобы индикатор выполнения увеличивался каждый раз, когда отмечается какая-либо радиокнопка, в соответствии с процентом ответов на вопросы от общего числа вопросов.
Проблема в том, что он увеличивается только один раз, т.е. только для первого вопроса. Например, если есть три вопроса, индикатор прогресса застрянет на отметке 33%, независимо от того, ответили ли на другие вопросы или нет.
Вот соответствующий код:
HTML:-
<!--progress bar-->
<div id="progress-bar-display">0%</div>
{% for q in questions %}
<h3> {{ q.id }}. {{ q.question }}</h3>
<input type = "radio" name = "q{{ q.id }}" value = "a" id = "q1a" > a. {{ q.option1 }}<br><br>
<input type = "radio" name = "q{{ q.id }}" value = "b" id = "q1b" > b. {{ q.option2 }}<br><br>
<input type = "radio" name = "q{{ q.id }}" value = "c" id = "q1c" > c. {{ q.option3 }}<br><br>
<input type = "radio" name = "q{{ q.id }}" value = "d" id = "q1d" > d. {{ q.option4 }}<br><br>
{% endfor %}
JavaScript :-
//progress_bar_count-->
var radio = document.querySelectorAll("input[type='radio']");
answered = 0;
var size = 0;
function animate(){
answered += (1 / questionCount * 100).toFixed(0)
var progressBar = document.getElementById("progress-bar-display");
var animation = size;
var id = setInterval(move, 10);
var increment = answered;
size = animation + increment;
function move() {
if (animation >= size || size > 100) {
clearInterval(id);
} else {
animation++;
progressBar.style.width = animation + '%';
progressBar.innerHTML = animation * 1 + '%';
}
}
}
for (var i = 0 ; i < radio.length; i++) {
radio[i].addEventListener('click' , animate) ;
}