Тест с 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, время: 01:08. |