我有以下代码:
var tick;
/* START - timer */
startclock();
/* CLOCK - stop timer */
function stopclock() {
alert('stop timer');
clearTimeout(tick);
}
/* CLOCK - start timer */
function startclock() {
var ut = new Date();
var h, m;
var time = " ";
var hour;
h = ut.getHours();
m = ut.getMinutes();
if (m <= 9) m = "0" + m; if (h <= 9) h = "0" + h;
time += h + ":" + m;
/* EXPIRE - check */
var day = moment(expire).diff(new Date(), 'days');
if (day > 0) { hour = moment(expire).diff(new Date(), 'hours') - (day * 24); } else { hour = moment(expire).diff(new Date(), 'hours'); };
switch (day) {
case 3:
case 2:
case 1:
/* MESSAGE - expiration */
$(".authentication_problem_container").css("display", "block");
$(".authentication_problem_block").html("Your Account Expire: " + day + " Day(s) " + hour + " Hour(s)");
tick = setTimeout(startclock, 1000);
break;
case 0:
/* AUTHORISATION - error */
$("#account").css("display", "none");
$(".cut_off").css("display", "block");
$(".cut_off_text").html("Your STB is blocked.<br> Call the provider.");
window.active = 'authorisation';
/* CLOCK - stop timer */
stopclock();
break;
}
}
/* REMOTE - control codes */
$(document).keydown(function(e){
switch(e.keyCode || e.which){
case 112:
alert("RED BUTTON PRESSED!");
break;
case 113:
alert("YELLOW BUTTON PRESSED!");
break;
case 114:
alert("BLUE BUTTON PRESSED!");
break;
}
})
我有一个问题,当我收到消息“停止计时器”时,我的程序不再响应。所以我不知道我做错了什么。我阅读了在javascript中使用计时器的在线教程,但这不起作用。
因此,当我按遥控器上的黄色按钮清除计时器之前,我得到了正确的警报“黄色按钮已按下!”之后调用clearTimeout(tick)函数,则所有按钮均无效。
答案 0 :(得分:0)
问题在于alert(...)
函数会阻止其余代码执行,直到您关闭它为止。我测试了您的代码,它对我来说很好用,所以是alert
调用冻结了您的代码或某些外部因素,例如您编写的其他代码。