倒计时定时器内删除元素节点问题

来源:互联网 发布:商用空气能 价格 知乎 编辑:程序博客网 时间:2024/06/10 02:32
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">    *{margin: 0; padding: 0;}    #ff{width: 500px; height: 100px;margin: 100px auto;text-align: center;line-height: 100px; background: #999999;}</style><script type="text/javascript">window.onload = function () {    var ff = document.getElementById("ff");    djs();    var dong = setInterval(djs,1000);    function djs () {        var new_time = new Date(2017,7,10,10,23,0).getTime();        var now_time = new Date().getTime();        var times = new_time - now_time;        if (times > 0) {            temp();        } else if (times<0&&times>-(5*1000)){ //活动时间 5s            ff.innerHTML = "活动进行中";        } else {            clearInterval(dong);            ff.innerHTML = "活动已结束";            setTimeout(function(){                ff.parentNode.removeChild(ff);//执行完报错            },3000)        }        //条件成立倒计时方法        function temp (){            //换算成毫秒数            time = times/1000;            //获得天数            var tian = parseInt(time/86400);            //不到一天剩下的秒数            time %= 86400;            //获得小时数            var shi = parseInt(time/3600);            //获得不到一小时 的秒数            time %= 3600;            //获得分钟数            var fen = parseInt(time/60);            //获得不到一分钟的秒数            var miao = parseInt(time%60);            ff.innerHTML = "距离活动时间还有:"+tian+"天"+shi+"时"+fen+"分"+miao+"秒";        }    }}</script></head><body><p id="ff"></p></body></html>

常规倒计时,本来写到else的时候就应该完了,但脑子一想还差点什么,就想着倒计时结束后三秒把ff这个节点删掉,写了个
else {
clearInterval(dong);
ff.innerHTML = "活动已结束";
setTimeout(function(){
ff.parentNode.removeChild(ff);//执行完报错
},3000)
}

发现浏览器解析完后删除ff后还执行了一次,因为ff节点已经删除所以报错,为什么已经把定时器删除了最后还执行了一次?