我使用下面的数字来计算毫秒,它运行得非常好。但是我希望在计时器值为9秒时调用logout()。这是行不通的。你能有人建议吗?
</script>
<script type="text/javascript">
var timer, time = 0, start_time = 0;
function startstoptimer()
{
if (timer)
{
time += new Date().getTime() - start_time;
start_time = 0;
clearInterval(timer);
timer = null;
}
else
{
start_time = new Date().getTime();
timer = setInterval(function ()
{
document.d.d2.value = (time + new Date().getTime() - start_time)/1000;
if((time + new Date().getTime() - start_time)/1000==9.000)
logout();
}, 10);
}
}
</script>
<script>
function logout()
{
alert('Time is up');
}
</script>
答案 0 :(得分:1)
注意不精确的浮点数比较,你不能预测比较是否会因浮点算术造成的截断/精度错误而失败,我会避免相信
这就是我要做的事情:
function startstoptimer()
{
if (timer)
{
time += new Date().getTime() - start_time;
start_time = 0;
clearInterval(timer);
clearTimeout(launchLogoutTimer); // clear timeout
timer = null;
}
else
{
start_time = new Date().getTime();
timer = setInterval(function ()
{
document.d.d2.value = (time + new Date().getTime() - start_time)/1000;
/*if((time + new Date().getTime() - start_time)/1000==9.000)
logout();// dont call logout here */
}, 10);
// this way, you will be sure logout will be called after 9 seconds
// (unless you cancel it before using clearTimeout)
launchLogoutTimer = setTimeout(logout, 9000);
}
}