|
|
|
| Здравствуйте, участники форума!
Есть функция, рекурсивная:
function f_Drop(obj)
{
if (parseFloat(obj.style.top) <= 25) {
obj.style.top = (parseFloat(obj.style.top) + 1) + "px";
setTimeout("f_Drop(obj)", 400);
}
}
|
Результат работы данной функции - изменение свойства top на один пиксель. Условие в функции, при этом, всё ещё выполняется, но функция перестаёт работать.
Связано ли это с setTimeout() или с чем-то ещё? | |
|
|
|
|
|
|
|
для: SilentChild
(25.02.2012 в 15:52)
| | setTimeout("f_Drop("+obj+")", 400); | |
|
|
|
|
|
|
|
для: AlexSol
(25.02.2012 в 16:18)
| | К сожалению, проблема не в этом. Не помогло. | |
|
|
|
|
|
|
|
для: SilentChild
(25.02.2012 в 16:23)
| | Ищите проблему в данных, в остальном проблем нет, исключая только передачу параметра в таймере, нужно все-таки выделять:
function loop(n) {
window.status = n;
n++;
setTimeout("loop("+n+")", 400);
}
loop(0);
|
| |
|
|
|
|
|
|
|
для: task
(25.02.2012 в 16:36)
| | Вот как получаю данные и использую их в функции:
function f_Int(f)
{
var u = document.getElementsByTagName('li')[0].getElementsByTagName('ul')[0];
var s = window.getComputedStyle(u, "");
var top = s.getPropertyValue("top");
u.style.top = top;
if (f) {
f_Drop(u);
}
}
|
| |
|
|
|
|
|
|
|
для: SilentChild
(25.02.2012 в 15:52)
| | Зачем МНОГОКРАТНО передавать функции один и тот же неизменяемый аргумент?
ДО первого вызова функции f_Drop () определите глобальную переменную OBJ
Пример:
<html>
<head>
<script>
var OBJ;
function f_Drop ()
{
var Z = OBJ.style.top.split ('px') [0] * 1;
if (Z <= 1000) {
OBJ.style.top = (Z + 10) + "px";
setTimeout ('f_Drop ()', 400);
}
}
</script>
</head>
<body onload="OBJ = document.getElementById ('DV'); f_Drop ()">
<div style="width: 100px; height: 100px; background: yellow; position: absolute; left: 100px; top: 100px" id="DV"></div>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: ЯСА
(25.02.2012 в 21:11)
| | Ух ты, функция "завелась" с пол оборота. Благодарю! Очень помогли. =) Дело, видимо, действительно в том, что "двадцать" раз аргумент передаётся функции. | |
|
|
|
|
|
|
|
для: SilentChild
(25.02.2012 в 22:16)
| | Нет, дело совершенно не в том - сколько раз вызывается функция (и сколько раз ей передаётся аргумент).
Дело совсем в ином.
В том, чего вам понять, видимо, НЕ ДАНО.
Я совсем недавно вам пытался это объяснить - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=85168 - но вы не въехали.
Полагаю, что ВООБЩЕ что-либо вам объяснять - гиблое дело.
Перефразируя Стругацких - "трудно быть богомбестолковым" (с) | |
|
|
|
|
|
|
|
для: ЯСА
(25.02.2012 в 23:16)
| | Да-да, я помню. Значит буду разбираться и вникать сново в то, что Вы написали, пока не станет ДАНО. =) Очень помогли, спасибо Вам огромное! И да... согласен: очень трудно. =)) | |
|
|
|