这是一个更大的three.js项目的一部分,但基本上我要做的是显示一个div 5秒钟,然后根据用户交互让它消失。但是,如果用户在5秒之前触发交互,则当前div必须消失,以替换为新div并保持5秒。我正在使用jquery进行dom交互下面是我的代码:
let lastdiv = 1;
function displayState(text){
if ($("#temp"+String(lastdiv))){
$("#temp"+String(lastdiv)).remove();
}
lastdiv += 1
body.append('<div id = "temp' + String(lastdiv) +'" class = "state">' + text + '</div>');
setTimeout(function(){
if($("#temp"+String(lastdiv))){
$("#temp"+String(lastdiv)).remove();
}
}, 5000);
}
目前发生的情况是div显示5秒。如果没有进一步的互动,它就会消失。但是,如果在这5秒钟内有另一个交互,新的div确实会显示,但它会在显示前一个div后的5秒钟内消失,即如果在显示div1后2秒钟触发交互,则div2将替换div1,但会在3秒钟后消失。
如果有更好的方法,请告诉我。提前谢谢。
2条答案
按热度按时间zz2j4svz1#
跟踪超时并取消它。
h7wcgrx32#
存储的返回值
setTimeout
在一个变量中调用clearTimeout
取消它。演示: