Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清除间隔后再次启动间隔_Javascript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript 清除间隔后再次启动间隔

Javascript 清除间隔后再次启动间隔,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,清除间隔后如何重新启动间隔?我希望一个按钮每11秒可点击一次,当计时器大于0时,我将其禁用,当它等于0时,按钮未禁用,因此可点击。我编写了此代码,它似乎可以工作,但在多次调用setInterval函数后,计时器下降过快任何解决方案> 数据:{ 刺激:11, 是的, asd:null }, 方法:{ 测试{ 这是刺激物; 如果this.sTimer==0{ clearIntervalthis.asd; 这个。刺激物=11; this.sDisabled=false; }否则{ this.sDisa

清除间隔后如何重新启动间隔?我希望一个按钮每11秒可点击一次,当计时器大于0时,我将其禁用,当它等于0时,按钮未禁用,因此可点击。我编写了此代码,它似乎可以工作,但在多次调用setInterval函数后,计时器下降过快任何解决方案>

数据:{ 刺激:11, 是的, asd:null }, 方法:{ 测试{ 这是刺激物; 如果this.sTimer==0{ clearIntervalthis.asd; 这个。刺激物=11; this.sDisabled=false; }否则{ this.sDisabled=true; } }, 特产{ setInterval=>this.testing,1000 } }, 创造{ this.asd=setInterval=>this.testing,1000; } 特殊攻击{{sTimer}}
您在这里犯了几个错误,因此首先要实现这一点,您应该使用setTimeout而不是setInterval,因为interval通常会在特定的给定时间后重复,因此这可能也是您单击按钮时被调用两次的原因之一。然后,您需要为此原因创建一个通用函数,然后在文档创建中调用它,而不是创建两个不同的间隔并分别调用它们

因此,在遵守这些规则的情况下,您的最终代码应该是这样的:

HTML

特殊攻击{{sTimer}} Javascript

数据:=>{ 返回{ 刺激:11, 禁用:错误, asd:null }; }, 方法:{ 特产{ clearTimeoutthis.asd;//或者按照您在评论中的建议,您可以在此处取消它,替换为:this.sDisabled=true 如果此.sTimer>0{ this.asd=setTimeout=>{ this.sDisabled=true; 这个。刺激物-=1; 这是一种特殊的战术; }, 1000; }否则{ clearTimeoutthis.asd; 这个刺激物=11; this.sDisabled=false; } } }, 创造{ 这是一种特殊的战术; } 下面是一个工作演示:


这是一个有点奇怪的代码imho,但您正在开始创建的时间间隔,。但是,如果您从某处调用SpecialAtack,您将调用此.testing,这将导致计时器倒计时fasterWorks正常,但按钮可单击1秒,在这1秒内,我可以单击5次或更多次,这正是我不想要的。我在if语句之前添加了此。sDisabled=true,并且工作正常。谢谢@aravivafshe不错的一个,有另一种方法可以解决这个问题,所以你应该在每次点击时清除超时。查看更新。