26.05.2016, 10:37
|
Аспирант
|
|
Регистрация: 13.08.2015
Сообщений: 45
|
|
Объяснил сам себе
Здравствуйте, я попытался сам себе объяснить, как работает кусок кода. Скажите, правильно ли я понимаю или что-то упускаю или что-то понимаю неверно?
function kontroll9(){
var answer = document.getElementById("otvet9"), - переменная, которая будет хранить элемент в html коде, который отвечает за блок, выводящий ответ.
vastus = document.getElementsByName("v9"), - создается переменная vastus, которая хранит в себе группу элементов (radio или checkbox) под определенным айди в html коде
array = [1,1,1,0]; //массив булевских значений, верные ответы 1
array = array.every(function(check, i){ // перебор элементов в массиве. переменной array присваивается значение массива, обработанного функцией every. every это функция, которая проверяет все ли элементы в массиве прошли тест, который задан функцией. Сама функция задает правило, при котором функция возвращает значение параметра check, в случае если функция every прошла успешно проверку по заданному критерию, то есть равна булевому значению true.
return check == vastus[i].checked - возвращает значение параметра check, в случае если функция every прошла успешно проверку по заданному критерию, то есть по значениям, которые находятся в массиве array
})
answer.innerHTML = array ? "верно" : "неверно"; - в элементе answer выводится значение, которое получается при проверке переменной array. знак ? означает, что если значение true, то выводится надпись "верно", а : означает, что иначе выводится "неверно".
answer.style.color = array ? "green" : "red";
array && correct++; - увеличивает количество правильных ответов на
1.
};
и ещё, я не пойму, зачем тут в конце не только correct++ но и array++???
спасибо заранее
|
|
26.05.2016, 10:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,075
|
|
Сообщение от Lecseus
|
array++???
|
где это в коде?
array && correct++; тоже что if(array == true) correct++; если ответ правильный общее количество правильных ответов увеличить на 1.
|
|
26.05.2016, 10:53
|
Аспирант
|
|
Регистрация: 13.08.2015
Сообщений: 45
|
|
СпасибО!!!!
Точно, нет такого в коде, невнимателен. А так понимаю верно?
|
|
26.05.2016, 11:05
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,075
|
|
Сообщение от Lecseus
|
А так понимаю верно?
|
да ... массив в переменной array превращается Boolean-объект (true/false)
Последний раз редактировалось рони, 26.05.2016 в 11:08.
|
|
26.05.2016, 11:10
|
Аспирант
|
|
Регистрация: 13.08.2015
Сообщений: 45
|
|
большая благодарность!
|
|
26.05.2016, 11:17
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Lecseus,
Сообщение от Lecseus
|
vastus = document.getElementsByName("v9"), - создается переменная vastus, которая хранит в себе группу элементов (radio или checkbox) под определенным айди в html коде
|
Небольшая неточность.
Не айди, а нейм.
Кроме того, у группы элементов не может быть одинакового айди (написать можно, работать будет неправильно, вообще непредсказуемо)
|
|
26.05.2016, 11:45
|
Аспирант
|
|
Регистрация: 13.08.2015
Сообщений: 45
|
|
Сообщение от Dilettante_Pro
|
Lecseus,
Небольшая неточность.
Не айди, а нейм.
Кроме того, у группы элементов не может быть одинакового айди (написать можно, работать будет неправильно, вообще непредсказуемо)
|
точно. благодарю!
|
|
26.05.2016, 12:01
|
Аспирант
|
|
Регистрация: 13.08.2015
Сообщений: 45
|
|
Интересно получается, то есть массив становится булевым значением только в двух положениях [1,0,1,1] - true, а [0,1,0,0] - false и никак иначе.
|
|
26.05.2016, 12:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,075
|
|
Lecseus,
нет массив становится true только при одном правильном ответе из 16 возможных
|
|
26.05.2016, 12:34
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,075
|
|
Lecseus,
все четыре чекбокса должны быть правильно выбраны
<script>
for (var i=0; i<16; i++) {
var a = ("000"+i.toString(2)).substr(-4),
b = [1,0,1,1].every(function(el,k) {
return el == a[k]
})
document.write(a+" => "+b+"<br>")}
</script>
Последний раз редактировалось рони, 26.05.2016 в 12:38.
|
|
|
|