调整大小时设置间隔
setInterval on resize
我有以下代码:
var intervalId = "";
var isRunning = false;
var iCount = 0;
function animation() {
switch (iCount++ % 2) {
case 0:
$('.class1').removeClass("is-active");
$(".class2").addClass("is-active");
break;
case 1:
$('.class2').removeClass("is-active");
$(".class1").addClass("is-active");
break;
}
isRunning = true;
}
if (window.innerWidth > 1024) {
intervalId = setInterval(animation, 3000);
}
$(window).on("orientationchange resize", function () {
debounce(function () {
if (window.innerWidth < 1024) {
if (isRunning == true) {
clearInterval(intervalId);
isRunning = false;
}
} else if (window.innerWidth > 1024) {
if (isRunning == false) {
intervalId = setInterval(animation, 3000);
}
}
}, 250);
});
我想要得到的是,在 1024+ 屏幕上 setInterval
被触发,低于 1024 的任何内容都不会被触发。但是在将大小调整为低于 1024 时,setInterval
仍然被解雇。
如有任何帮助,我们将不胜感激。
isRunning
逻辑无用且多余,无论是否定义intervalId
。您对同一件事使用两个变量,这太过分了。
此外,您测试 window.innerWidth
两次:是 <1024 还是 >1024?第二个测试没用,如果正好1024会怎样?
这个代码块让事情变得更清晰、更简单:
debounce(function () {
if (window.innerWidth < 1024) {
clearInterval(intervalId);
} else {
if(!intervalId) intervalId = setInterval(animation, 3000);
}
})
我通过将此代码用于我的调整大小功能使其正常工作。
$(window).on("orientationchange resize", debounce(function () {
if (window.innerWidth < 1024) {
clearInterval(intervalId);
intervalId = "";
} else {
if (!intervalId) intervalId = setInterval(animation, 3000);
}
}));
我有以下代码:
var intervalId = "";
var isRunning = false;
var iCount = 0;
function animation() {
switch (iCount++ % 2) {
case 0:
$('.class1').removeClass("is-active");
$(".class2").addClass("is-active");
break;
case 1:
$('.class2').removeClass("is-active");
$(".class1").addClass("is-active");
break;
}
isRunning = true;
}
if (window.innerWidth > 1024) {
intervalId = setInterval(animation, 3000);
}
$(window).on("orientationchange resize", function () {
debounce(function () {
if (window.innerWidth < 1024) {
if (isRunning == true) {
clearInterval(intervalId);
isRunning = false;
}
} else if (window.innerWidth > 1024) {
if (isRunning == false) {
intervalId = setInterval(animation, 3000);
}
}
}, 250);
});
我想要得到的是,在 1024+ 屏幕上 setInterval
被触发,低于 1024 的任何内容都不会被触发。但是在将大小调整为低于 1024 时,setInterval
仍然被解雇。
如有任何帮助,我们将不胜感激。
isRunning
逻辑无用且多余,无论是否定义intervalId
。您对同一件事使用两个变量,这太过分了。
此外,您测试 window.innerWidth
两次:是 <1024 还是 >1024?第二个测试没用,如果正好1024会怎样?
这个代码块让事情变得更清晰、更简单:
debounce(function () {
if (window.innerWidth < 1024) {
clearInterval(intervalId);
} else {
if(!intervalId) intervalId = setInterval(animation, 3000);
}
})
我通过将此代码用于我的调整大小功能使其正常工作。
$(window).on("orientationchange resize", debounce(function () {
if (window.innerWidth < 1024) {
clearInterval(intervalId);
intervalId = "";
} else {
if (!intervalId) intervalId = setInterval(animation, 3000);
}
}));