//倒计时
function countDown(time){
var nowTime= new Date();
var total = (nowTime.getTime())-Date.parse(time.replace('-', "/"));
var s = total/1000;
if(s<(24*3600)){
s = (24*3600)-(total/1000);
var h = s/3600;
if(h>=1){
h+="";
h = h.substring(0,h.indexOf("."));
}else{
h = 0;
}
var min = (s-(h*3600))/60;
if(min>=1){
min+="";
min = min.substring(0,min.indexOf("."));
}else{
min = 0;
}
var ss = s-(h*3600)-(min*60)+".";

ret = ""+h+"小时"+min+"分"+ss.substring(0,ss.indexOf("."))+"秒";
document.getElementById("time").innerText  = "距离竞拍结束时间还有:"+ret;
}else{
//clearInterval(this.interval);
document.getElementById("time").innerText  = "竞拍已结束!";
//不可出价、不可发表评论
document.getElementById("bid").style.display='none';
document.getElementById("publishCom").style.display='none';
document.getElementById("toLogin").style.display='none';
document.getElementById("toAttest").style.display='none';
document.getElementById("cantBid").style.display=''; //this.buyerOrSalerIsLoginUser();
}
}
这是一个js倒计时的方法,我在另一个地方调用了它。this.interval = window.setInterval("countDown('"+this.lastTime+"')",1000);
调用没错,倒计时一直在按照要求倒着,可问题是,倒计时结束以后,也就是else{}方法体,我想让这个方法停下来,可是clearInterval(this.interval)
不管作用,我在else{}中alert()一个数字,明明倒计时结束了,可是还在每隔一秒弹一次。else{}方法体中,最后一行,this.buyerOrSalerIsLoginUser();是调用一个方法,可是程序没有走到,我测试半天,发现程序根本没有进入这个方法中,我就怀疑是不是因为定时执行的方法没有清除呢?于是,我就想清除它clearInterval(this.interval);可是根本不管用问题:
   怎么样才能clearInterval掉呢?或者如何在else{}中调用另一个方法?   烦烦烦大家知道的帮帮我吧弄了好久了还不行···

解决方案 »

  1.   

    用一个全局变量var tid = null;function countDown(time){
       ...
       if(tid!=null) {clearInterval(tid);tid=null;}
    }调用
    tid = setInterval("countDown('"+this.lastTime+"')",1000);
      

  2.   

    ...
    if(s<(24*3600) && s>0){
    ...
    试看...
      

  3.   


    关键在这里:this.interval = window.setInterval("countDown('"+this.lastTime+"')",1000);这里你不是一直在调用吗?当小于0了当然还会继续执行,函数肯定会执行,函数是被外面的调用,外面并没有停止,所以回继续显示;
      

  4.   

    to shenzhenNBA :我alert()了一下,s一直大于零,而且还很大很大,它是当前时间和参数的差,所以s是不可能为零的,我加上了你的条件&& s>0 也不行。。
      

  5.   

    to hookee :我没有看明白你的意思,为什么非null时要clearInterval呢?你写的if是在我else{}里要加的么?
      

  6.   

    to hookee : 
    我试了一下,没问题了,else{}方法体的alert()只是alert了一次,说明他调用方法,倒计时已经结束,不再定时执行setInterval方法了,谢谢你。 可是我还没太懂为什么。。顺便问一下,我在else{}方法体中能调用别的方法么?
      

  7.   

    功能已经实现了,谢谢你。hookee。。真是愁了我半天。