javascript – Setinterval与指数时间减少

我有一个带有setinterval的mousedown事件.我希望间隔时间可变.所以第一个是500,第二个是500/2 = 250等等.有什么提示吗?

$plus.mousedown(function(e) {
    increment(20)
    timeout = setInterval(function(){
        increment(20)
    }, 500);
});
$(document).mouseup(function(){
    clearInterval(timeout);
    return false;
});

干杯!

编辑:抱歉模棱两可.我想在mousedown期间改变间隔的时间.因此,在执行mousedown时,间隔时间应该改变.因此,不是每次单击鼠标,而是每次连续点击,然后再次重置.

解决方法:

你不能用setInterval()来实现这个,除非你不断清除延迟更改,所以你不妨在setTimeout()周围写一个包装来完成类似的事情:

function easingTimeout(delay, fn)
{
  var id,
  invoker = function() {
    fn();
    delay = Math.floor(delay / 2);
    if (delay) {
      id = setTimeout(invoker, delay);
    } else {
      id = null;
    }
  }

  // start it off
  id = setTimeout(invoker, delay);

  return {
    clear: function() {
      if (id) {
        clearTimeout(id);
        id = null;
      }
    }
}

使用:

var timeout;

$plus.mousedown(function(e) {
    increment(20);
    timeout = easingTimeout(500, function() {
        increment(20);
    });
});

$(document).mouseup(function(){
    timeout.clear();
    return false;
});
上一篇:javascript – 每n秒js生成一个随机数


下一篇:javascript – setInterval给我TypeError:无法调用undefined的方法’apply’