Сообщение от vchmuzh
|
Это можно сказать мое первое JS приложение.
|
Сколько JS по времени учили?
Ну, сами напросились!
(шучу)
var OPTIONS = 6; // кол-во вариантов ответа
Не сказать, что плохо - это деревянно. Нельзя создать опрос с разным количеством вариантов ответа. << сказали "шесть" - значит "шесть"! >>
countAnswers(target); /* при каждом ответе делается пресчет всех уже сделанных ответов
если ответы даны на все вопросы - секция закрывается автоматически и подводится итог*/
трудоёмко. обычно для последовательной записи используют массивы.
function addClass(elem, cls) {
var arr = elem.className.split(' ');
for(var i=0; i<arr.length; i++) {
if(arr[i] == cls) return;
}
arr.push(cls);
return elem.className = arr.join(' ');
}
function removeClass(elem, cls) {
var arr = elem.className.split(' ');
for(var i=0; i<arr.length; i++) {
if(arr[i] == cls) arr.splice(i--, 1);
}
return elem.className = arr.join(' ');
}
function hasClass(elem, cls) {
var arr = elem.className.split(' ');
for(var i=0; i<arr.length; i++) {
if(arr[i] == cls) return true;
}
return false;
}
вообще, код организован по процедурному принципу "никаких объектов, только функции".
такой код
может быть трудно расширять и дополнять.
(сам так пишу на коленке)
наверное, настало время почитать про такие штуки, как паттерны. MVC тот же, например.
function animate(opts) {
var start = new Date;
var delta = opts.delta || linear;
var timer = setInterval(function() {
var progress = (new Date - start) / opts.duration;
if (progress > 1) progress = 1;
opts.step(1 - delta(1 - progress) );
if (progress == 1) {
clearInterval(timer);
opts.complete && opts.complete();
}
}, opts.delay || 13);
return timer;
}
родная
тоже с неё начинал понимание, пока не прошибло.
задержка в 13 мс. по-умолчанию даёт ~77 кадра в секунду. Это потрясно.