clearInterval() 不清除 setInterval()
clearInterval() not clearing setInterval()
这段代码有什么问题?
区间不会清零,能想到的我都试过了
我已经搜索了其他问题,找不到答案,也有类似的问题,但解决方案在这里不起作用!
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() { console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac < 0) {setInterval(fadeIn, fadeInterval)};
};
function fadeIn() { console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac > 100) {clearInterval(fadeInterval); console.log("clearInterval")};
};
function fade() { console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() { console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity + ". opac: " + opac);
image.style.opacity = opacity;
if(opac < 0) { clearInterval(fadeInterval);fadeInterval=setInterval(fadeIn, fadeInterval)};
};
function fadeIn() { console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac > 100) {clearInterval(fadeInterval); console.log("clearInterval")};
};
function fade() { console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
在设置 fadeOut 之前清除 fadeInterval :)
您需要清除 fadeOut()
中的第一个区间
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() {
console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100;
console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if (opac < 0) {
//clear the interval from fade here
clearInterval(fadeInterval);
//store the new interval reference in fadeInterval
fadeInterval = setInterval(fadeIn, fadeInterval)
};
};
function fadeIn() {
console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100;
console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if (opac > 100) {
//clear the interval created in fadeOut
clearInterval(fadeInterval);
console.log("clearInterval")
};
};
function fade() {
console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
问题似乎出在函数 fadeOut()
,在这一行:
if(opac < 0) {setInterval(fadeIn, fadeInterval)}; //<-- required fadeTiming instead, also missing the assignment
试试这个:
if(opac < 0) {
clearInterval(fadeInterval); //make sure if the interval isn't already running
fadeInterval = setInterval(fadeIn, fadeTiming);
}
这段代码有什么问题?
区间不会清零,能想到的我都试过了
我已经搜索了其他问题,找不到答案,也有类似的问题,但解决方案在这里不起作用!
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() { console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac < 0) {setInterval(fadeIn, fadeInterval)};
};
function fadeIn() { console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac > 100) {clearInterval(fadeInterval); console.log("clearInterval")};
};
function fade() { console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() { console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity + ". opac: " + opac);
image.style.opacity = opacity;
if(opac < 0) { clearInterval(fadeInterval);fadeInterval=setInterval(fadeIn, fadeInterval)};
};
function fadeIn() { console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100; console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if(opac > 100) {clearInterval(fadeInterval); console.log("clearInterval")};
};
function fade() { console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
在设置 fadeOut 之前清除 fadeInterval :)
您需要清除 fadeOut()
var opacity = 1;
var opac = opacity * 100;
var fadeInterval;
var fadeTiming = fade_timing / 100;
function fadeOut() {
console.log("fadeOut called!");
opac = opac - 1;
opacity = opac / 100;
console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if (opac < 0) {
//clear the interval from fade here
clearInterval(fadeInterval);
//store the new interval reference in fadeInterval
fadeInterval = setInterval(fadeIn, fadeInterval)
};
};
function fadeIn() {
console.log("fadeIn called!");
opac = opac + 1;
opacity = opac / 100;
console.log("fading... opacity: " + opacity);
image.style.opacity = opacity;
if (opac > 100) {
//clear the interval created in fadeOut
clearInterval(fadeInterval);
console.log("clearInterval")
};
};
function fade() {
console.log("fade called!");
fadeInterval = setInterval(fadeOut, fadeTiming);
};
问题似乎出在函数 fadeOut()
,在这一行:
if(opac < 0) {setInterval(fadeIn, fadeInterval)}; //<-- required fadeTiming instead, also missing the assignment
试试这个:
if(opac < 0) {
clearInterval(fadeInterval); //make sure if the interval isn't already running
fadeInterval = setInterval(fadeIn, fadeTiming);
}