2 回答
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
TA贡献1871条经验 获得超8个赞
你可以使用这样的东西:
var myVar;
function myFunction() {
myVar = setTimeout(function(){ alert("Hello"); }, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
该clearTimeout会防止与的setTimeout()来执行设定功能。希望这可以帮助。
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
TA贡献1772条经验 获得超8个赞
你会在超时之间得到一些奇怪的交互,例如
开始时,计时器将设置为 5 秒和 8 秒
5 秒时:
将显示 logo1
徽标 2 将被隐藏
该函数将在另外 5 秒内运行
8 秒时:
将显示徽标 2
标志 1 将被隐藏
该功能设置为在 8 秒后再次运行
10 秒后,第一个函数再次运行,因此显示徽标 1
15 秒后,第一个函数再次运行,标志 1 已显示
16 秒时,第二个函数再次运行,显示徽标 2
20 秒后,第一个函数再次运行,显示徽标 1
在 24 秒时,第二个函数再次运行,显示徽标 2
25 秒后,第一个函数再次运行,显示徽标 1
30 秒后,第一个函数再次运行,已显示徽标 1
32 秒时,第二个函数再次运行,显示徽标 2
等等…
也许您希望徽标 2 显示 5 秒,然后徽标 1 显示 3 秒,然后徽标 2 显示 5 秒,依此类推。
在这种情况下,您可以使用setTimeout 的适当设置从另一个函数调用一个函数。由于默认是显示徽标,我已将show更改为hide,例如
let logo1 = document.querySelector('.logo-1');
let logo2 = document.querySelector('.logo-2');
function firstLogo() {
console.log('Hiding first logo');
logo1.classList.toggle('hide');
logo2.classList.toggle('hide');
setTimeout(secondLogo, 3000);
}
function secondLogo() {
console.log('Hiding second logo');
logo1.classList.toggle('hide');
logo2.classList.toggle('hide');
setTimeout(firstLogo, 5000);
}
firstLogo();
.hide {
display: none;
}
<span class="logo-1">logo 1</span><span class="logo-2 hide">logo 2</span>
添加回答
举报