怎么让window.clearTimeout(id)不影响fade in
时间: 2024-05-03 10:23:08 浏览: 100
jsWindow对象及方法.pdf
fade in的动画是通过逐渐改变元素的opacity实现的。当我们调用window.clearTimeout(id)来清除setTimeout计时器时,如果该计时器是用于控制fade in动画的,那么清除计时器会导致动画停止。为了避免这种情况,我们可以在设置setTimeout计时器时将其返回的ID保存在一个变量中,然后将该变量作为参数传递给fade in函数。这样,在需要清除计时器的时候,我们只需要清除与fade in无关的计时器,而不会影响fade in动画的计时器。
例如:
```
var fadeTimer;
function fadeIn(element, duration) {
var opacity = 0;
var interval = 50;
var gap = interval / duration;
element.style.display = "block";
element.style.opacity = opacity;
function fadeInInterval() {
opacity += gap;
element.style.opacity = opacity;
if (opacity >= 1) {
clearInterval(fadeTimer);
}
}
fadeTimer = setInterval(fadeInInterval, interval);
}
// 调用fadeIn函数时将返回的计时器ID保存在fadeTimer变量中
fadeIn(document.getElementById("my-element"), 1000);
// 在需要清除计时器时,仅清除与fade in无关的计时器,不会影响fade in动画的计时器
window.clearTimeout(otherTimer);
```
在以上示例中,我们在调用fadeIn函数时将返回的计时器ID保存在fadeTimer变量中。当需要清除计时器时,我们只需要清除与fade in无关的计时器,例如otherTimer,而不会影响fadeTimer的计时器。
阅读全文