Показать сообщение отдельно
  #6 (permalink)  
Старый 01.09.2008, 14:39
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

По коду:
if (settings[0]) // Выбор тега снежинки в зависимсти от опции settings[0]
76 {
77 flake_tag = 'img';
78 } else {
79 flake_tag = 'div';
80 }

Я бы не использовал имэдж, а использовал только див с бэком или без.

70 var clientWidth = document.getElementById(settings[6]).clientWidth;
71 var clientHeight = document.getElementById(settings[6]).clientHeight;
91 var flake_obj = document.getElementById(settings[6]).appendChild(flake_obj);

Много раз обращаясь к этому методу ты замедляешь выполнение кода.
Лучше один раз получить элемнт, сохранить его в переменную и использовать.

function delete_flakes()
105{
106 for (var id=1; id<=settings[5]; id++)
107 {
108 var flake_obj = document.getElementById('flake' + id);
109 document.getElementById(settings[6]).removeChild(flake_obj);
110 }
111}


Делать на каждой итерации document.getElementById(settings[6]) - плохо.

function stop_snowfall()
157{
158 delete_flakes();
159 clearInterval(positions);
160}


Удаляешь снежинки, а в этот момент сработал интервал (так как он не отключен). Что будет??? Правильно:
var flake_obj = document.getElementById('flake'+i); /* Получаем объект снежинки */
Получим undefined/
121 flake_obj.left += (flake_obj.speedX + flake_obj.amplitude*Math.cos(flake_obj.top*flake_o bj.tempo))*dt;
получим ошибку, так как у undefined нет свойства .left
Ответить с цитированием