Javascript 无法清除间隔

Javascript 无法清除间隔,javascript,countdowntimer,clearinterval,Javascript,Countdowntimer,Clearinterval,我是这里的新手,也是Javascript的新手。 我正在创建一个计时器,它将显示特定日期和时间剩下多少天、小时、分钟和秒。 我成功地编写了这个程序,但有一个问题我无法解决。 当到达特定日期和时间时,计时器显示0天0小时0分0秒。但就在那之后,值变为负值。我不想显示负值,这就是为什么我使用clearInterval每秒停止更新DOM,但它不起作用。这是我的密码 函数init() { . . . var timeCalc=设置间隔(timeRemainingCalc,1000); } var la

我是这里的新手,也是Javascript的新手。 我正在创建一个计时器,它将显示特定日期和时间剩下多少天、小时、分钟和秒。 我成功地编写了这个程序,但有一个问题我无法解决。 当到达特定日期和时间时,计时器显示0天0小时0分0秒。但就在那之后,值变为负值。我不想显示负值,这就是为什么我使用clearInterval每秒停止更新DOM,但它不起作用。这是我的密码

函数init()
{
.
.
.
var timeCalc=设置间隔(timeRemainingCalc,1000);
}
var launchTime=新日期(“2015年5月28日00:56:00”).getTime()//这里有一个特定的日期和时间
函数timeremaingcalc(){
var currentTime=new Date();//这将获取客户端的日期和时间
var daysleft=Math.floor(((launchTime-currentTime.getTime())/1000)/86400);
var hoursleft=Math.floor((launchTime-currentTime.getTime())/1000)/3600-daysleft*24;
var minutesleet=Math.floor((launchTime-currentTime.getTime())/1000)/60-daysleft*24*60-hoursleet*60;
var secondsleft=Math.floor((launchTime-currentTime.getTime())/1000)-daysleft*24*60*60-hoursleft*60*60-minutesleft*60;

如果(daysleft很好,您的代码永远不会调用
clearInterval
,除非时间正好是
launchTime

摆弄这个修改版本的
launchTime
值,您将看到:

var timeCalc = setInterval(timeRemainingCalc, 1000);

var launchTime = new Date("01/01/2015 00:01:00").getTime(); //here goes a particular date and time

function timeRemainingCalc() {
    var currentTime = new Date(); //this gets client's date and time
    var daysleft = Math.floor(((launchTime - currentTime.getTime()) / 1000) / 86400);
    var hoursleft = Math.floor(((launchTime - currentTime.getTime()) / 1000) / 3600) - daysleft * 24;
    var minutesleft = Math.floor(((launchTime - currentTime.getTime()) / 1000) / 60) - daysleft * 24 * 60 - hoursleft * 60;
    var secondsleft = Math.floor((launchTime - currentTime.getTime()) / 1000) - daysleft * 24 * 60 * 60 - hoursleft * 60 * 60 - minutesleft * 60;

    if (daysleft <= 0 && hoursleft <= 0 && minutesleft <= 0 && secondsleft <= 0) //checks if the particular time has already been reached or not? i.e. negative value
    {
        console.log("Clear!");
        clearInterval(timeCalc); //this one is not working...
    } else //code inside this only updates 1st and 2nd digit of days, hours, etc of the timer
    {
        console.log("daysleft: " + daysleft);
        console.log("hoursleft: " + hoursleft);
        console.log("minutesleft: " + minutesleft);
        console.log("secondsleft: " + secondsleft);
        console.log("");
    }
}
var timeCalc=setInterval(timeRemainingCalc,1000);
var launchTime=new Date(“01/01/2015 00:01:00”).getTime();//这里有一个特定的日期和时间
函数timeremaingcalc(){
var currentTime=new Date();//这将获取客户端的日期和时间
var daysleft=Math.floor(((launchTime-currentTime.getTime())/1000)/86400);
var hoursleft=Math.floor((launchTime-currentTime.getTime())/1000)/3600-daysleft*24;
var minutesleet=Math.floor((launchTime-currentTime.getTime())/1000)/60-daysleft*24*60-hoursleet*60;
var secondsleft=Math.floor((launchTime-currentTime.getTime())/1000)-daysleft*24*60*60-hoursleft*60*60-minutesleft*60;

如果(daysleft您正在其他函数作用域中定义timecalc,则无法访问该变量

最简单的解决方法:做一个

var timeCalc;
function init()
{    ...
     timeCalc = setInterval(timeRemainingCalc, 1000);
}

让timeCalc全球可用。

我更喜欢
launchTime我认为你永远不会达到你的if,因为不是所有的值都是负值,只是天数。