Javascript 如何正确使用setTimeOut?
我一直在尝试正确地使用Javascript 如何正确使用setTimeOut?,javascript,html,css,dom,Javascript,Html,Css,Dom,我一直在尝试正确地使用setTimeOut,但一直没有弄明白 预期输出: 若你们点击任何一个按钮,一个横幅将滑入视图,8秒后它将消失 单击页面上的任何其他位置,横幅将消失 在8秒计时器结束之前,单击相同的按钮,新的8秒计时器将启动 实际输出: 若你们点击任何一个按钮,横幅就会滑入视图,8秒后它就会消失 单击页面上的任意位置,使横幅消失 在8秒计时器结束前单击相同的按钮,横幅将结束第一次单击的剩余秒数,然后消失,而不是开始新的8秒 这是我尝试过的,也是一个代码沙盒: [链接] HTML: 接受
setTimeOut
,但一直没有弄明白
预期输出:
若你们点击任何一个按钮,一个横幅将滑入视图,8秒后它将消失
单击页面上的任何其他位置,横幅将消失
在8秒计时器结束之前,单击相同的按钮,新的8秒计时器将启动
实际输出:
若你们点击任何一个按钮,横幅就会滑入视图,8秒后它就会消失
单击页面上的任意位置,使横幅消失
在8秒计时器结束前单击相同的按钮,横幅将结束第一次单击的剩余秒数,然后消失,而不是开始新的8秒
这是我尝试过的,也是一个代码沙盒:
[链接]
HTML:
接受
取消
非常感谢。
快回来。
再次单击同一按钮时,必须清除超时
var timeout;
const getGreetingBanner =(e)=>{
let query = document.querySelector(e)
query.style.right = '8px';
//clearing timeout
clearTimeout( timeout );
timeout = setTimeout(() => {
query.style.right = '-165px';
}, 8000);
}
timeout变量是否需要是全局变量?@Vash最好在全局范围内分配它,以便您可以在页面中的任何位置访问它。
<div class="container">
<button onclick="getGreetingBanner('.thankyou')" type="button" class="accept">Accept</button>
<button onclick="getGreetingBanner('.comeBackSoon')" type="button" class="cancel">Cancel</button>
<div class="banishBanner thankyou">Thank You!</div>
<div class="banishBanner comeBackSoon">Come back soon.</div>
</div>
var timeout;
const getGreetingBanner =(e)=>{
let query = document.querySelector(e)
query.style.right = '8px';
//clearing timeout
clearTimeout( timeout );
timeout = setTimeout(() => {
query.style.right = '-165px';
}, 8000);
}