Увеличение изображения
Написал функцию линейного увеличения размеров рисунка. Пробую ее на следующем коде. Где-то ошибка, ткните пожалуйста носом.
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
Попробуйте вот так, передавая элемент по ссылке прямо в функцию, либо через getElementById. Работать с элементами, через их имя (name) это как-то не комильфо.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta content="text/html; charset=windows-1251" http-equiv="content-type"><title>test script</title> <script type="text/javascript" language="JavaScript"> <!-- function blank() {//пустая функция }//blank function IncImg(h1,w1,h2,w2, imgObj) { var v=100;//скорость увеличения в пикселях var w=w1,h=h1;//текущие размеры var vp;//скорость увеличения в процентах if( (v/h1)>(v/w1)) vp=v/h1; else vp=v/w1; dh=vp*h1; dw=vp*w1; dt=1000/v; for(;h<h2;h+=dh,w+=dw) { /*применение текущих размеров*/ imgObj.style.width=w; imgObj.style.height=h; setTimeout(blank, dt);//задержка } /*применение конечных размеров*/ imgObj.style.width=w2; imgObj.style.height=h2; }//IncImg //--> </script> </head> <body> <img OnClick="IncImg(288,400,757,799,this)" alt="02" src="02.gif" name="img00" id="img00" height="288" width="400"> </body> </html> |
попробовал
в мозилле не работает вообще. :confused:
в ИЕ работает - но вроде без задержки - т.е. такое чувство, что SetTimeOut вообще не работает. :confused: Наверно, как-то не так использую SetTimeOut. ?? |
setTimeout только отсрочивает вызов функции, переданной в первый параметр, она не останавливает выполнение главного потока. Так что вам нужно использовать рекурсивный подход, т.е вызывать в функции саму себя по тайм-ауту. Если вы не знаете, как это сделать, я могу написать пример, но чуть позже.
|
2 Андрей Параничев
Убрал style - в мозилле тоже заработало. Теперь дело только в том, чтобы сделать функцию рекурсивной.
Спасибо за совет:) |
2 Андрей Параничев
Переделал с использованием рекурсии. Почему все-равно увеличивает не постепенно? :confused:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
Кстати, вы можете использовать не рекурсивное выполнение функции по setTimeout, а установку её выполнения по интервалу, через функцию setInterval.
Для передачи параметров, в setTimeout вам нужно создать анонимную функцию, а использованная вами конструкция не поддерживается, т.е. setTimeout должен вызываться вот так: setTimeout(function() { yvel(imgObj,w,h,h2,dw,dh,dt) }, dt); |
Часовой пояс GMT +3, время: 16:42. |