Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как работает setTimeout??? (https://javascript.ru/forum/misc/14019-kak-rabotaet-settimeout.html)

rhjirftyjn 24.12.2010 14:03

как работает setTimeout???
 
Здравствуйте.
задача: увеличичить картинку с размера 100px до 300px пошагово
без таймаута - получается простой ролловер (маленькая картинка - большая картинка).
я это списал на быстрое выполнение цикла, в результате чего вижу только конечные значения ширины картинки.
поставил таймаут - и все перестало работать.
чего не так сделано?
спасибо

-----------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<script type="text/javascript">

function bigImg()
{
var m = document.tigr.width;

while (m <300)
{
setTimeout('m=m+25',250);
document.tigr.width = m;
}
}
function resizeImg()
{
document.tigr.width = 102;
}

</script>


<body>
<img src="images/tigr.jpg" name="tigr" width="102" onclick="bigImg()" ondblclick="resizeImg()" />



</body>
</html>
----------------------------------------------------------------------

Kolyaj 24.12.2010 14:31

http://alljs.ru/articles/timeout/

ksa 24.12.2010 14:35

rhjirftyjn, как вариант...

<!DOCTYPE html>
<html>
<head>
<style>
* {
	margin: 0;
	padding: 0;
}
div {
	width: 100px;
	height: 20px;
	background-color: silver;
}
</style>
<script>
function Go() {
	var o=document.getElementById('box').style
	var w=(o.width)? parseInt(o.width): 100
	var h=(o.height)? parseInt(o.height): 20
	w+=10
	h+=10
	if (w>300) {
		return
	}
	o.width=w+'px'
	o.height=h+'px'
	setTimeout(Go,20)
}
</script>
</head>
<body>
<div id='box'></div>
<input type='button' value='Go' onclick='Go()'>
</body>
</html>

rhjirftyjn 24.12.2010 14:39

спасибо.
но тем не менее, хотелось бы узнать причину, по которой не работает мой код.

ksa 24.12.2010 14:41

Цитата:

Сообщение от rhjirftyjn
хотелось бы узнать причину, по которой не работает мой код

Вот это что у тебя? :D

setTimeout('m=m+25',250);

Kolyaj 24.12.2010 14:52

Цитата:

Сообщение от rhjirftyjn
но тем не менее, хотелось бы узнать причину, по которой не работает мой код.

Узнайте, кто ж вам мешает. Исчерпывающую информацию получили.

rhjirftyjn 24.12.2010 14:53

увеличить ширину на 25, и через 2,5 секунды присвоить получившееся значение ширине рисунка.

ksa 24.12.2010 16:39

Цитата:

Сообщение от rhjirftyjn
увеличить ширину на 25, и через 2,5 секунды присвоить получившееся значение ширине рисунка.

Это так хочешь ты... :) Но сам метод делает только то, что он может/должен делать...
Вот это-то и можно почитать по ссыле что дал Kolyaj


Часовой пояс GMT +3, время: 20:58.