Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2011, 20:14
Новичок на форуме
Отправить личное сообщение для Rain Посмотреть профиль Найти все сообщения от Rain
 
Регистрация: 09.08.2011
Сообщений: 6

Помогите начинающему разобраться с setTimeout
Есть простой код, который при клике на ссылку стартует таймер. Здесь все понятно и просто.

<a href="#" onclick="StartTimer();">Start Timer</a>
<span id="timer"></span>

<script language="javascript" type="text/javascript">

var TimeStart = 0;
var TimeStop = 100;

function StartTimer()
{
	if(TimeStart <= TimeStop)
	{
		TimeStart++;
		document.getElementById('timer').innerHTML = TimeStart;
		setTimeout(StartTimer, 100);
	}
	else document.getElementById('timer').innerHTML = TimeStop;
}
</script>


Проблема в том, что мне нужно подправить функцию для передачи ей начала и конца отсчета. А-ля function StartTimer(Start, End).

Вот тут и начинаются проблемы...

Если я меняю строку
setTimeout(StartTimer, 100);

на
setTimeout(StartTimer(), 100);

то таймер уже стоит моментально в значении 100. Точнее она запускается 100 раз подряд без каких-либо задержек. Соответственно как запустить с интервалом функцию с параметрами я пока что не понимаю...

Надеюсь кто-то объяснит начинающему в чем подвох и где ошибка(и).
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2011, 20:20
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

<a href="#" onclick="startTimer(0, 20); return false;">Start Timer</a>
<span id="timer"></span>

<script>
function startTimer(start, stop) {
    if (start <= stop) {
        start++;
        document.getElementById('timer').innerHTML = start;
        setTimeout(function() {
            startTimer(start, stop);
        }, 100);
    }
    else document.getElementById('timer').innerHTML = stop;
}
</script>

Последний раз редактировалось ваый, 09.08.2011 в 20:28.
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2011, 20:29
Новичок на форуме
Отправить личное сообщение для Rain Посмотреть профиль Найти все сообщения от Rain
 
Регистрация: 09.08.2011
Сообщений: 6

Большое спасибо!
А не могли бы вы объяснить на пальцах разницу между передачей в качестве параметра для сетТаймаута:

setTimeout(function() { startTimer(start, stop); }, 100);

и

setTimeout(startTimer(start, stop), 100);

Заранее благодарен.
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2011, 20:29
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Rain
Точнее она запускается 100 раз подряд без каких-либо задержек.
На основании каких заблуждений Вы сделали этот вывод?
Сообщение от Rain
Если я меняю строку
setTimeout(StartTimer, 100);
на
setTimeout(StartTimer(), 100);
то таймер уже стоит моментально в значении 100.
А что еще Вы ожидаете, вызывая функцию?
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2011, 20:37
Новичок на форуме
Отправить личное сообщение для Rain Посмотреть профиль Найти все сообщения от Rain
 
Регистрация: 09.08.2011
Сообщений: 6

Сообщение от B@rmaley.e><e Посмотреть сообщение
На основании каких заблуждений Вы сделали этот вывод?
Вставил обычный алерт с выводом значения TimeStart

Сообщение от B@rmaley.e><e Посмотреть сообщение
А что еще Вы ожидаете, вызывая функцию?
Мы одновременно пост писали, поэтому если не затруднит, то посмотрите мой прошлый пост (который над вашим сразу).
Я как раз и не знаю пока что чего ждать, т.к. не понимаю еще разницы что происходит между этими двумя вариантами. Поэтому и прошу чтоб мне кто-то объяснил доступным языком...
Ответить с цитированием
  #6 (permalink)  
Старый 09.08.2011, 20:42
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

StartTimer() - вы запускаете функцию в этот же момент. На это указывают скобки.

StartTimer - просто ссылка на функцию.
Ответить с цитированием
  #7 (permalink)  
Старый 09.08.2011, 21:18
Новичок на форуме
Отправить личное сообщение для Rain Посмотреть профиль Найти все сообщения от Rain
 
Регистрация: 09.08.2011
Сообщений: 6

Спасибо еще раз.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с Bubbling HawkOFF Элементы интерфейса 10 09.08.2011 22:43
Помогите разобраться с this Nigga2102 Элементы интерфейса 4 04.05.2011 18:28
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24
Помогите разобраться с задачей (поиск строки) Absinthe Ваши сайты и скрипты 6 07.12.2009 09:17