В чистом JavaScript я в настоящее время использую таймер, чтобы изменить шесть фоновых изображений. Я установил скрипт для бесконечного повторения цикла, пока открыто окно. Однако после первого цикла я хотел бы сбросить значение приращения таймера с 3250 миллисекунд до 7000 миллисекунд для всех циклов после того, как первый цикл завершился с более высокой скоростью.
<script>
function shiftbackgrd(interval, frames) {
var int = 1;
function IncrementAnswersBkgrnds() {
document.body.id = "b"+int;
int++;
if(int === frames) { int = 1; }
}
var swap = window.setInterval(IncrementAnswersBkgrnds, interval);
}
shiftbackgrd(3250, 7); //milliseconds, frames
</script>
2 ответа
В основном вам нужно знать, когда переключаться, а затем использовать clearInterval
для очистки старого и установки нового интервала. Вы можете использовать флаг, который устанавливается, когда ваш счетчик достигает значения.
function shiftbackgrd(interval, interval2, frames) {
var int = 1;
var allSeen = false
function IncrementAnswersBkgrnds() {
// do something
console.log("call:", int);
int++;
if (int === frames) {
int = 1;
if (!allSeen) {
console.log("All seen, changing to new interval")
allSeen = true
window.clearInterval(swap)
swap = window.setInterval(IncrementAnswersBkgrnds, interval2)
}
}
}
var swap = window.setInterval(IncrementAnswersBkgrnds, interval);
}
shiftbackgrd(500, 1500, 7); //milliseconds, frames
Если вам нужно всего лишь изменить его при первом вызове, вы можете просто использовать setTimeout для первого вызова, а затем после этого сделать функцию самостоятельной.
setTimeout(function () {
shiftbackgrd(7000, 7); //milliseconds, frames
}, 3250)
С вашим исходным кодом вам все равно нужно, чтобы ваша функция shiftbackgrd
немедленно вызывала IncrementAnswersBkgrnds
прямо перед запуском setInterval, чтобы это полностью заработало.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.