|
|
|
| Задачка: нужно сделать, чтобы в цикле цифры одна за другой выводились с задержкой в таком виде: 0, 1, 2, 3...
(как будто печатаются, что ли...)
Мои мысли:
Код:
<html>
<body>
<script>
i=0;
pause=0;
while(i<10)
{
setTimeout("document.body.innerHTML += i+'<br />';", pause);
pause=pause+500;
i++;
}
</script>
</body>
</html>
|
результат: 10, 10, 10...
цифры выводятся с задержкой, но почему-то все десятки, а должно быть 0, 1, 2, 3...
код (убрал задержку):
<html>
<body>
<script>
i=0;
pause=0;
while(i<10)
{
document.body.innerHTML += i+'<br />';
pause=pause+500;
i++;
}
</script>
</body>
</html>
|
результат: 0, 1, 2, 3...
Цифры корректные, но задержки нет...
Вопрос: как все таки решить эту задачку? Кто подскажет?
Заранее спасибо. | |
|
|
|
|
|
|
|
для: madv
(10.02.2009 в 19:07)
| | я борюсь с задержками при выполнении моих скриптов а вы наоборот ))))) сделайте цикл длинный и будет вам задержка ))))) | |
|
|
|
|
|
|
|
для: goodwilll
(11.02.2009 в 16:09)
| | Объясняю, что происходит:
while() - запускает setTimeout (теперь setTimeout работает автономо, само посебе) следом сразу же выполняются арифметические действия над перемеными.
Всё это просиходит мнгновенно и не ждет setTimeout, как вы этого предполагали, поэтому i сразу равно 10.
Просто напросто setTimeout не успевает вывести i равное чемуто другому.
Вот так должно выглядеть ваше рабочее решение:
<html>
<body>
<script>
var i=0;
var timer;
function insert_10()
{
document.body.innerHTML += i+'<br />';
i++;
if(i<10)
{
timer = setTimeout("insert_10();", 500);
}
else
{
clearTimeout(timer);
}
}
insert_10();
</script>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Dr Lines
(11.02.2009 в 16:26)
| | Вам надо типа рекурсия )
что-то вроде этого
var tm;
function func1(i)
{
i++;
document.body.innerHTML += i+'<br />';
if (i<10)
tm = setTimeout('func1('+i+'), 500);
else
clearTimeout(tm);
}
i = 0;
func(0);
|
| |
|
|
|
|
|
|
|
для: madv
(10.02.2009 в 19:07)
| |
<html>
<head>
<script>
var i = p = 0;
onload = function f () {document.body.innerHTML += i++ + '<br />'; p += 500; if (i < 10) setTimeout (f, p)}
</script>
</head>
<body>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: PAT
(11.02.2009 в 19:30)
| | Да, так явно "покорректней" будет ) | |
|
|
|
|
|
|
|
для: ddhvvn
(11.02.2009 в 19:52)
| | Большое спасибо всем, очень помогли! | |
|
|
|