Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   SetTimeout не принимает параметр при повторном вызове (https://javascript.ru/forum/misc/5006-settimeout-ne-prinimaet-parametr-pri-povtornom-vyzove.html)

2dkott 07.09.2009 18:38

SetTimeout не принимает параметр при повторном вызове
 
Привет всем,

Задача скрипта запуск функции до появления определенных условий.

function onemenu()
{
var onemenu = new Array ("czero", "cone","ctwo")
return onemenu
}

var array_one = onemenu()

menuup(array_one)

function menuup(menu_array)
{
for (i= flag1; i<=menu_array.length; i++)
{
anim(i)
flag1 ++
break
}
if (flag1 <= menu_array.length)
{
var set_timeout = 'menuup(' + menu_array + ')'
setTimeout(set_timeout, 1000)
}
else {	
flag1 = 0
}
}


Так вот при повторном вызове SetTimout не передает список array_one. :((

Буду благодарен, если кто-нибудь мне поможет с этим разобраться.

Kolyaj 07.09.2009 18:40

Вместо setTimeout(set_timeout, 1000), поставьте alert(set_timeout) и посмотрите, что выведется.

2dkott 07.09.2009 18:57

Ставил, в первый раз все нормально выводит все элементы списка, а во второй раз [object].

ZoNT 07.09.2009 19:02

function onemenu()
{
var onemenu = new Array ("czero", "cone","ctwo")
return onemenu
}
 
var array_one = onemenu()
 
menuup(array_one)
 
function menuup(menu_array)
{
for (i= flag1; i<=menu_array.length; i++)
{
anim(i)
flag1 ++
break
}
if (flag1 <= menu_array.length)
{
setTimeout(function(){menuup(menu_array)}, 1000)
}
else {    
flag1 = 0
}
}

2dkott 07.09.2009 20:46

Работает!!!

Если нетрудно, теперь можно объяснить в чем сакраментальная разница между setTimeout(set_timeout,1000) и setTimeout(function(){menuup(menu_array)}, 1000)?

Спасибо за помощь.

e1f 08.09.2009 14:56

сакраментальная разница в передаче параметров:
- в первом случае ф-ии set_timeout не передается ничего,
- во втором случае благодаря замыканию передается массив menu_array.

P.S. Kolyaj, для интереса выполнил
setTimeout(function(){console.info(arguments)},1)

выдает то [-10], то [5]. Интересно, что передается?

2dkott 08.09.2009 15:01

Спасибо за ответ, буду разбираться.

Kolyaj 08.09.2009 15:09

Цитата:

Сообщение от e1f
Интересно, что передается?

То -10, то 5. Очевидно же.

e1f 08.09.2009 15:40

Цитата:

Сообщение от Kolyaj (Сообщение 29636)
То -10, то 5. Очевидно же.

Да, действительно :) А если серьезно? ;)

Kolyaj 08.09.2009 15:46

А если серьезно, я плохо представляю, что и где вы выполнили.


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