【问题标题】:JavaScript Disallow Function Until After Specified TimeJavaScript 在指定时间之前禁止函数
【发布时间】:2015-08-16 12:04:42
【问题描述】:

在具有 JS 函数的网站上工作,该函数会在鼠标移动时更新 - 要点是我不希望它在指定的时间后执行任何操作,就好像整个代码块被注释掉一样,直到例如 5 秒。

浏览 Stack Overflow 后,我得出结论,该解决方案可能涉及 setTimeOut(),但我已经尝试过,但它没有任何效果,浏览器控制台中也没有错误。我试过的(函数是function update(event):

 setTimeOut(update, 5000);
 setTimeOut(update(event), 5000);
 setTimeOut(function update(event), 5000);

最后一个导致它破裂,

Uncaught SyntaxError: Unexpected Token (

任何帮助将不胜感激, 贾罗德

【问题讨论】:

  • 您确定控制台中没有错误?没有像 'setTimeOut' 是未定义的
  • 啊等一下 - 你是正确的 - “setTimeOut is undefined”(由于我刚刚修复的一个错误,上次没有得到那个)
  • 所以你想在页面加载 5 秒后,在 mousemove 上“禁止”更新功能?是你的问题吗?
  • 是的,就是这个问题。
  • 所以 5 秒后,取消绑定 mousemove 事件。那么现在,你是如何绑定 mousemove 事件的呢?发布相关代码本身。您可以覆盖 update 方法,但更好的是取消绑定 mousemove 事件

标签: javascript jquery html


【解决方案1】:

“MyFunction”函数将在 5 秒前禁用 :)

var canStart = 1;

function MyFunction() {
    if(!canStart){
        return false;
    }
    //YourFunction
    canStart = 0;
    setTimeout(function(){
        canStart = 1;
    }, 5000);
}

http://jsfiddle.net/r0z5c6x1/

【讨论】:

    【解决方案2】:
    1. 方法不是setTimeOut(functionName, timeout)。 是setTimeout(functionName, timeout)

    2. 你做错了:

      setTimeout(更新, 5000); 设置超时(更新(事件),5000); setTimeout(函数更新(事件), 5000);

    你的代码是这样的:

    setTimeout(update, 5000);
    

    它在 setTimeout() 调用后 5 秒运行函数 update

    setTimeout(update(event), 5000);
    

    它使用参数event 调用方法update。然而,这个更新方法必须返回一个函数,这是我们不想要的。

    setTimeout(function update(event), 5000);
    

    那是 100% 错误的。你可能想要这个:

    setTimeout(function(event) {
      //Do whatever you want here.
    }, 5000, event);
    

    还有,最后一种方式:

    function() {
    
    }
    

    这就是所谓的匿名函数。

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多