Тест с checkbox
Задача была в том что бы написать тест с checkbox с несколькими вариантами овтетов , но как я не старалса этот код выбирает лиш 1 правильный ответ,тоесть несколько правильных вариантов в этом тесте быть неможет.Вот набросал код,подскажите что нужно исправить что-бы можно было ставить несколько правильных ответов а не один.
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function checkForm() {
var checkbox = document.getElementsByTagName('input');
var ansver = false;
for(var i=0;i!=checkbox.length;i++){
if (checkbox[i].type == 'checkbox' && checkbox[i].checked)
ansver = checkbox[i].name == 'zara';
// ansver = checkbox[i].name == 'sokg';
}
if (ansver) {
document.test.s1.
value="otvet pravilniy ";
return true;
} else {
document.test.s1.
value="otvet ne veren ";
return false;
}
}
</script>
</head>
<body>
<FORM name=test>
<b>v koko?</b>
<br><input type="checkbox" name="zara" value="yes">? kozel
<input type="checkbox" name="sokg" value="yes">? orel
<br><input type="checkbox" name="jas" value="yes">shenok
<br><input type="checkbox" name="glu" value="yes">kot
<P><TEXTAREA name=s1 rows=4 cols=50> </TEXTAREA> </P><input type="button" name="t1" value="podtcerdit" onClick="checkForm();">
<INPUT type=reset value="Сбросить ответы">
</FORM>
</body>
</html>
|
<!DOCTYPE html>
<html>
<head>
<script>
// правильные ответы - первый и третий
var answer = {1:true, 3:true};
function checkAnswer() {
// считаем что ответы правильные
var error = false;
// чекбоксы
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
// галка
var checked = inputs[i].checked;
// является ли вариант правильным
var right = answer[i+1] == true;
// если отметка не является правильной
if (checked !== right) {
error = true;
// дальше можно не проверять
break;
}
}
var output = document.getElementById('output');
output.value = error ? 'Ошибка!!!' : 'Зачот!!!';
// предотвращаем отправку формы
return false;
}
</script>
</head>
<body>
<form onsubmit="return checkAnswer()">
<h4>Вопрос?</h4>
<p><label><input type="checkbox">Вариант 1*</label></p>
<p><label><input type="checkbox">Вариант 2</label></p>
<p><label><input type="checkbox">Вариант 3*</label></p>
<p><button type="submit">Готово</button> <button type="reset">Сбросить ответы</button></p>
<p><textarea id="output" readonly></textarea></p>
</form>
</body>
</html>
|
var right = answer.indexOf(i + 1) !== -1; Почему оно гвоорит мне что данный обьект не поддерживает этод метод? Нет спасибо большое оно в браузере все работает,но ругаетса в компиляторе. И возможно же комбинировать в одном тесте сразу checkbox and radio? |
Потому что вы сидите на осле восьмой версии. Он очень дряхлый, глупый и без пендаля не умеет indexOf. Ну ничего, я поправил код, теперь даж ваша кляча его поймет.
|
Цитата:
|
indexOf - часть стандартна EcmaScript 5. IE8 из этого стандарта ничего почти не поддерживает. Можно подключить библиотеку es5-shim.js , она добавляет поддержку недостающих методов.
|
| Часовой пояс GMT +3, время: 19:10. |