Показать сообщение отдельно
  #4 (permalink)  
Старый 09.09.2012, 00:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от 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 кадра в секунду. Это потрясно.

Последний раз редактировалось melky, 09.09.2012 в 00:13.
Ответить с цитированием