Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.09.2009, 18:38
Интересующийся
Отправить личное сообщение для 2dkott Посмотреть профиль Найти все сообщения от 2dkott
 
Регистрация: 25.08.2009
Сообщений: 12

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. (

Буду благодарен, если кто-нибудь мне поможет с этим разобраться.
Ответить с цитированием
  #2 (permalink)  
Старый 07.09.2009, 18:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вместо setTimeout(set_timeout, 1000), поставьте alert(set_timeout) и посмотрите, что выведется.
Ответить с цитированием
  #3 (permalink)  
Старый 07.09.2009, 18:57
Интересующийся
Отправить личное сообщение для 2dkott Посмотреть профиль Найти все сообщения от 2dkott
 
Регистрация: 25.08.2009
Сообщений: 12

Ставил, в первый раз все нормально выводит все элементы списка, а во второй раз [object].
Ответить с цитированием
  #4 (permalink)  
Старый 07.09.2009, 19:02
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

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
}
}
Ответить с цитированием
  #5 (permalink)  
Старый 07.09.2009, 20:46
Интересующийся
Отправить личное сообщение для 2dkott Посмотреть профиль Найти все сообщения от 2dkott
 
Регистрация: 25.08.2009
Сообщений: 12

Работает!!!

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

Спасибо за помощь.
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2009, 14:56
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

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

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

выдает то [-10], то [5]. Интересно, что передается?
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2009, 15:01
Интересующийся
Отправить личное сообщение для 2dkott Посмотреть профиль Найти все сообщения от 2dkott
 
Регистрация: 25.08.2009
Сообщений: 12

Спасибо за ответ, буду разбираться.
Ответить с цитированием
  #8 (permalink)  
Старый 08.09.2009, 15:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от e1f
Интересно, что передается?
То -10, то 5. Очевидно же.
Ответить с цитированием
  #9 (permalink)  
Старый 08.09.2009, 15:40
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от Kolyaj Посмотреть сообщение
То -10, то 5. Очевидно же.
Да, действительно А если серьезно?
Ответить с цитированием
  #10 (permalink)  
Старый 08.09.2009, 15:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск