Проблема связана с document.getElementsByName('option').style.color
, поскольку вы пытаетесь получить элемент по имени тега, который возвращает массив всех совпадающих элементов, а в html нет элемента с именем option
. Предполагая, что вы хотите показать, правильный или неправильный выбранный ответ. Если верно, покажите зеленый цвет для текста или красный в случае неправильного ответа.
function check()
{
var selectedOption = document.querySelector('input[type=radio]:checked');
var answer = selectedOption.value;
var parentDiv = selectedOption.parentNode;
if(questions[currentQuestion].correct_answer == answer)
{
parentDiv.style.color="green";
} else{
parentDiv.style.color="red";
}
}
Другой простой способ - прикрепить элемент id
к label
и передать этот идентификатор в check
метод
<label class="option" id="option1">
<input type="radio" name="option" value="1" onclick="check(1, 'option1')"/>
<span id="opt1"></span>
</label>
<label class="option" id="option2">
<input type="radio" name="option" value="2" onclick="check(2, 'option2')" />
<span id="opt2"></span>
</label>
<label class="option" id="option3">
<input type="radio" name="option" value="3" onclick="check(3, 'option3')"/>
<span id="opt3"></span>
</label>
<label class="option" id="option4">
<input type="radio" name="option" value="4" onclick="check(4, 'option4')"/>
<span id="opt4"></span>
</label>
JS:
function check(answer, divId)
{
var parentDiv = document.getElementById(divId);
if(questions[currentQuestion].correct_answer == answer)
{
parentDiv.style.color = "green";
} else{
parentDiv.style.color = "red";
}
}
Обновить, отключить остальные переключатели Обернуть все ярлыки в div
.
<div>
<label class="option" id="option1">
<input type="radio" name="option" value="1" onclick="check(1, 'option1')"/>
<span id="opt1"></span>
</label>
<label class="option" id="option2">
<input type="radio" name="option" value="2" onclick="check(2, 'option2')" />
<span id="opt2"></span>
</label>
<label class="option" id="option3">
<input type="radio" name="option" value="3" onclick="check(3, 'option3')"/>
<span id="opt3"></span>
</label>
<label class="option" id="option4">
<input type="radio" name="option" value="4" onclick="check(4, 'option4')"/>
<span id="opt4"></span>
</label>
</div>
function check(answer, divId)
{
var parentDiv = document.getElementById(divId);
if(questions[currentQuestion].correct_answer == answer)
{
parentDiv.style.color = "green";
} else{
parentDiv.style.color = "red";
}
// additional codes to disable the other options.
const options = parentDiv.parentNode.querySelectorAll("input[type=radio]");
for(var i = 0; i < options.length; i++){
options[i].disabled = true;
}
}