Javascript 使用jquery,我如何制作一个可以立即重新启动并明显倒计时的计时器?
主要的问题是清除,无论我做什么,间隔似乎为每次点击运行多个计时器,即使我清除 我整晚都在做这件事。 我只是想重新启动一个倒计时点击。 我试着给这个人5秒钟的准备时间 然后用7秒来做这个动作。 所以,它需要从5开始倒计时,然后从7开始倒计时,如果单击,它需要随时重新开始 这比听起来难多了 我用了两种Javascript 使用jquery,我如何制作一个可以立即重新启动并明显倒计时的计时器?,javascript,jquery,timer,setinterval,Javascript,Jquery,Timer,Setinterval,主要的问题是清除,无论我做什么,间隔似乎为每次点击运行多个计时器,即使我清除 我整晚都在做这件事。 我只是想重新启动一个倒计时点击。 我试着给这个人5秒钟的准备时间 然后用7秒来做这个动作。 所以,它需要从5开始倒计时,然后从7开始倒计时,如果单击,它需要随时重新开始 这比听起来难多了 我用了两种 clearInterval() var Interval = setInterval(function(){}, 1000); 但无法使其工作。setTimeout()返回一个可用于取消请求的标识符
clearInterval()
var Interval = setInterval(function(){}, 1000);
但无法使其工作。setTimeout()返回一个可用于取消请求的标识符:
var timerId = setTimeout(function() { console.log('Now!'); }, 5000);
然后,您可以稍后取消它,除非它已被执行:
$('#cancelTimerButton').click(function() { clearTimeout(timerId); });
如果需要将其可视化,可以执行以下操作:
var n = 0;
var tick = function() {
console.log(n % 2 ? 'Tock' : 'Tick');
timerId = setTimeout(tick, 1000);
if (++n == 5) {
clearTimeout(timerId);
}
};
var timerId = setTimeout(tick, 1000);`
试试这个:
var timer = (function() {
var timer = null;
return {
start: function( timesToRun, callback, interval ) {
var timesRan = 0
timer = setInterval( function() {
if ( timesRan < timesToRun ) {
timesRan++
callback( timesRan, timesRan === timesToRun )
} else {
clearInterval( timer )
}
}, interval || 1000 )
return this
},
stop: function() {
clearInterval( timer )
return this
}
}
}())
var cyclesLabel = document.getElementById("t")
// first argument is the amount of times to run the interval
// second argument is a callback to use on each iteration
// the 3rd argument is optional and is the interval time in milliseconds.
timer.start( 7, totalCycles, 1000 )
// Reset example
document.getElementById("btn").addEventListener( "click", function() {
cyclesLabel.textContent = "0"
timer.stop().start( 5, totalCycles )
} )
// Just for the sake of the example
function totalCycles( cycles, lastCycle ) {
cyclesLabel.textContent = cycles
if ( lastCycle === true ) {
alert( "This is the last chance to do something" )
}
}
var timer=(函数(){
var定时器=null;
返回{
开始:函数(timesToRun、回调、间隔){
var timesRan=0
计时器=设置间隔(函数(){
如果(时间运行<时间运行){
时差++
回调(timesRan,timesRan===timesToRun)
}否则{
清除间隔(计时器)
}
},间隔| | 1000)
还这个
},
停止:函数(){
清除间隔(计时器)
还这个
}
}
}())
var cyclesLabel=document.getElementById(“t”)
//第一个参数是运行间隔的次数
//第二个参数是在每次迭代中使用的回调
//第三个参数是可选的,是以毫秒为单位的间隔时间。
定时器启动(7,总周期,1000)
//重置示例
document.getElementById(“btn”).addEventListener(“单击”,函数)(){
cyclesLabel.textContent=“0”
timer.stop().start(5个总周期)
} )
//只是为了举个例子
函数totalCycles(cycles,LastCycles){
cyclesLabel.textContent=周期
如果(lastCycle==真){
警惕(“这是做某事的最后机会”)
}
}
您应该将
setInterval
返回的id提供给clearInterval
,即clearInterval(Interval)
谢谢您的评论,但我这样做了,您如何使用setTimeout进行视觉倒计时?您可以使用1秒(1000毫秒)还有一个计数器?我希望我能用这么简单的工具写这么漂亮复杂的代码。这里没有什么特别的,你只需要读一两本书就可以加强你的js知识。