javascript - 相对于剩余时间减少 setTimeout 时间

标签 javascript jquery

我正在制作一个随机“旋转器”,循环遍历 8 个 div 并添加一个事件类,如下所示:

https://jsfiddle.net/9q1tf51g/

//create random setTimeout time from 3sec to 5sec
var time = Math.floor(Math.random() * (5000 - 3000 + 1)) + 3000;
var exit = false;

function repeat(){
    //my code
    if(!exit){
        setTimeout(repeat, 50); 
    }
}

我的问题是,我希望功能重复慢慢结束,以制造更多悬念。我想我可以通过提高超时时间 50 来做到这一点,但是我怎样才能根据剩余时间来做到这一点?

提前致谢!

最佳答案

你可以试试这个。

$('button').on('click', function(){
var time = Math.floor(Math.random() * (5000 - 3000 + 1)) + 3000;
var anCounter = 1;
var anState = "positive";
var exit = false;
//var time1 = 50000;
setInterval(function(){time = time-1000;}, 1000);
function repeat(){
    if(anCounter>7 && anState=="positive"){ anState="negative"}
    if(anCounter<2 && anState=="negative"){ anState="positive"}

    $('div[data-id="'+anCounter+'"]').addClass('active');
    $('div').not('div[data-id="'+anCounter+'"]').removeClass('active');

    if(anState=="positive"){anCounter++;}else{anCounter--;}
    if(!exit){
if(time <1000)
        setTimeout(repeat, 300);
  else if(time< 2000)
  setTimeout(repeat, 100);
  else setTimeout(repeat, 50);

    }
}

repeat();
setTimeout(function(){
exit=true;
},time);
});

关于javascript - 相对于剩余时间减少 setTimeout 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670983/

相关文章:

javascript - 谷歌地图 API : Refresh ImageMapType Overlay

javascript - 查询 : Get div defined in same table row

jquery - 单击链接时显示一个 div 并隐藏其他 div

jquery - 在 jQuery.ajax() GET 请求中记录构造的 URL 字符串

javascript - 为什么在 IE 浏览器中右键单击会停止 javascript

javascript - 如何在Javascript/HTML/CSS上应用多个转换原点?

javascript - 使用其值查找某个复选框

javascript - 如何从外部服务器加载特定数据?

javascript - 如何从函数中打开组件 react native

javascript - Web 应用程序作为程序运行,无需浏览器