Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2014, 15:42
Аспирант
Отправить личное сообщение для Skriptor Посмотреть профиль Найти все сообщения от Skriptor
 
Регистрация: 08.12.2014
Сообщений: 31

Что означает (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>
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2014, 17:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Скрипт анимирует размер картинки.
На каждой итерации проводится проверка достигла ли картинка конечных размеров. Результат этой проверки и отражается в widthOk и heightOk.
Далее, в зависимости от этих результатов продолжается анимация:
Сообщение от Skriptor
if(heightOk+widthOk!=2)setTimeout(func,duration,na me,width,height,duration,false);
Сообщение от Skriptor
откуда javascript знает, что duration - это скорость изменения картинки в миллисекундах
duration передается в качестве второго аргумента в функцию setTimeout.
Этот аргумент как раз и задает таймаут, по прошествии которого запустится функция (переданная первым аргументом).

Например setTimeout(fn, 1000) - запустит функцию fn через 1000 милисекунд.

Остальные аргументы тупо прокидываются в функцию. Кстати это не кроссбраузерно!

Вобще код ужасный, писался школьником. Особо не вчитывался в него, так что может где ошибся в объяснении.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2014, 13:25
Аспирант
Отправить личное сообщение для Skriptor Посмотреть профиль Найти все сообщения от Skriptor
 
Регистрация: 08.12.2014
Сообщений: 31

Сообщение от danik.js Посмотреть сообщение
Скрипт анимирует размер картинки.
На каждой итерации проводится проверка достигла ли картинка конечных размеров. Результат этой проверки и отражается в widthOk и heightOk.
Далее, в зависимости от этих результатов продолжается анимация:


duration передается в качестве второго аргумента в функцию setTimeout.
Этот аргумент как раз и задает таймаут, по прошествии которого запустится функция (переданная первым аргументом).

Например setTimeout(fn, 1000) - запустит функцию fn через 1000 милисекунд.

Остальные аргументы тупо прокидываются в функцию. Кстати это не кроссбраузерно!

Вобще код ужасный, писался школьником. Особо не вчитывался в него, так что может где ошибся в объяснении.
Спасибо за разъяснения!
Почему widthOK и heightOK равняются нулю?
Насчет setTimeout - понял (то есть там автоматически второй параметр означает задержку независимо от названия)...
Пытаюсь попроще брать коды, чтобы вникнуть в логику алгоритма (кстати, почему код не кроссбраузерный - какие браузеры могут глючить с этим кодом?)
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2014, 14:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Skriptor
Почему widthOK и heightOK равняются нулю?
По логике не нулю, а false(ложь). И далее присваивать не 1, а true(истина). Просто писавший код не захотел использовать булевы значения true/false. Это не такая уж и редкость.

Почему 0, а не 1? Ну так очевидно же - изначально предполагается что width и heigth нифига не ОК. И только при выполнении условий становится OK. Код наверняка можно упростить. Такая портянка не может быть качественным кодом.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2014, 14:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Передача параметров не работает в IE9 и ниже:
https://developer.mozilla.org/ru/doc...B0.D0.BC.D0.B8
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означает ошибка "Отсутствует исполняющее ядро ДЛЯ расширения имени файла js" Mattias Общие вопросы Javascript 6 15.02.2021 13:16
что означает знак += lobzinatr Общие вопросы Javascript 1 15.04.2013 21:16
как получить тот кусок текста который сейчас видно на экране ? mitiya Общие вопросы Javascript 27 21.03.2013 12:21
помогите, что означает firstChild Dron13 Events/DOM/Window 1 15.01.2011 11:57
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13