Что означает (widthOK, duration)
Объясните, пожалуйста, что означают в данном скрипте свойства heightOK и widthOK, а также откуда javascript знает, что duration - это скорость изменения картинки в миллисекундах (если в коде нигде это не расшифровано):
<script type='text/JavaScript'> function func(name,width,height,duration,type){ var img=document.images.im, heightOk=0, widthOk=0; if(type==true){ if ((h<height)&&(w<width)){ if(img.height<height)img.height++; else heightOk=1; if(img.width<width) img.width++; else widthOk=1; } if ((h>height)&&(w>width)){ if(img.height>height)img.height--; else heightOk=1; if(img.width>width)img.width--; else widthOk=1; } if ((h>height)&&(w<width)){ if(img.height>height)img.height--; else heightOk=1; if(img.width<width) img.width++; else widthOk=1; } if ((h<height)&&(w>width)){ if(img.height<height)img.height++; else heightOk=1; if(img.width>width) img.width--; else widthOk=1; } if(heightOk+widthOk==2) setTimeout(func,duration,name,width,height,duration,false); else setTimeout(func,duration,name,width,height,duration,true); } else if(type==false) { if ((h<height)&&(w<width)){ if(img.height>h)img.height--; else heightOk=1; if(img.width>w)img.width--; else widthOk=1; } if ((h>height)&&(w>width)){ if(img.height<h)img.height++; else heightOk=1; if(img.width<w)img.width++; else widthOk=1; } if ((h>height)&&(w<width)){ if(img.height<h)img.height++; else heightOk=1; if(img.width>w)img.width--; else widthOk=1; } if ((h<height)&&(w>width)){ if(img.height>h)img.height--; else heightOk=1; if(img.width<w)img.width++; else widthOk=1; } if(heightOk+widthOk!=2) setTimeout(func,duration,name,width,height,duration,false); else setTimeout(func,duration,name,width,height,duration,true); } } var h = document.images.im.height; var w = document.images.im.width; var width = Number(prompt("Ведите максимальную ширину")); var height = Number(prompt("Ведите максимальную высоту")); var duration = Number(prompt("Ведите milliseconds")); func('i', width, height, duration, true); </script> |
Скрипт анимирует размер картинки.
На каждой итерации проводится проверка достигла ли картинка конечных размеров. Результат этой проверки и отражается в widthOk и heightOk. Далее, в зависимости от этих результатов продолжается анимация: Цитата:
Цитата:
Этот аргумент как раз и задает таймаут, по прошествии которого запустится функция (переданная первым аргументом). Например setTimeout(fn, 1000) - запустит функцию fn через 1000 милисекунд. Остальные аргументы тупо прокидываются в функцию. Кстати это не кроссбраузерно! Вобще код ужасный, писался школьником. Особо не вчитывался в него, так что может где ошибся в объяснении. |
Цитата:
Почему widthOK и heightOK равняются нулю? Насчет setTimeout - понял (то есть там автоматически второй параметр означает задержку независимо от названия)... Пытаюсь попроще брать коды, чтобы вникнуть в логику алгоритма (кстати, почему код не кроссбраузерный - какие браузеры могут глючить с этим кодом?) |
Цитата:
Почему 0, а не 1? Ну так очевидно же - изначально предполагается что width и heigth нифига не ОК. И только при выполнении условий становится OK. Код наверняка можно упростить. Такая портянка не может быть качественным кодом. |
Передача параметров не работает в IE9 и ниже:
https://developer.mozilla.org/ru/doc...B0.D0.BC.D0.B8 |
Часовой пояс GMT +3, время: 04:06. |