Помогите начинающему разобраться с 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 раз подряд без каких-либо задержек. Соответственно как запустить с интервалом функцию с параметрами я пока что не понимаю... Надеюсь кто-то объяснит начинающему в чем подвох и где ошибка(и). Спасибо. |
<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> |
Большое спасибо!
А не могли бы вы объяснить на пальцах разницу между передачей в качестве параметра для сетТаймаута: setTimeout(function() { startTimer(start, stop); }, 100); и setTimeout(startTimer(start, stop), 100); Заранее благодарен. |
Цитата:
Цитата:
|
Цитата:
Цитата:
Я как раз и не знаю пока что чего ждать, т.к. не понимаю еще разницы что происходит между этими двумя вариантами. Поэтому и прошу чтоб мне кто-то объяснил доступным языком... |
StartTimer() - вы запускаете функцию в этот же момент. На это указывают скобки.
StartTimer - просто ссылка на функцию. |
Спасибо еще раз.
|
Часовой пояс GMT +3, время: 08:16. |