Увеличение изображения
Написал функцию линейного увеличения размеров рисунка. Пробую ее на следующем коде. Где-то ошибка, ткните пожалуйста носом.
Код:
<!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, время: 07:11. |