function metronomeTick() {
$("#metronome").toggle();
setTimeout("metronomeTick()", 1000*60/$("#bpm").val());
}
metronomeTick();
Метод JavaScript setInterval()
обычно не рекомендуется, так как он не учитывает «время выполнения» функции (например, сколько времени требуется, чтобы фактически визуализировать тик). Если подумать, setInterval в этом случае будет еще лучше, поскольку он критичен по времени.
С setInterval()
код будет выглядеть примерно так:
var intervalReference = setInterval("metronomeTick()", 1000*60/$("#bpm").val());
function metronomeTick() {
// Do tick visualisation here, but make sure it takes only a reasonable amount of time
// Less than 1000*60/bpm, that is
}
$("#bpm").change(function() {
clearInterval(intervalReference);
intervalReference = setInterval("metronomeTick()", 1000*60/$(this).val());
});