我是javascript的新手。我正在检查我的数据库中的时间段,并显示到期末剩余的时间。
我在php中将strtotime
作为变量$lefttime
得到了时间值。我的问题是javascript部分,所以我不写PHP代码。
所以我的javascript代码是:
var s = <?php echo $lefttime; ?>; //s stands for seconds
var d = Math.floor(s/60); //d stands for minutes
s -= d*60;
var count = setInterval(functime, 1000);
function functime() {
s--;
if(s < 0) {
d--;
s = 59;
var san = s;
var dak = "0" + d;
}
else if(d < 0 ) {
clearInterval(functime);
document.getElementById('id').innerHTML = "over";
}
else if(d < 10){
var dak = "0" + d;
if(s < 10) {
var san = "0" + s;
}
else {
var san = s;
}
}
else if(s < 10){
var san = "0" + s;
if(d < 10) {
var dak = "0" + d;
}
else {
var dak = d;
}
}
else {
var san = s;
var dak = d;
}
document.getElementById('id').innerHTML = dak+":"+san;
}
我创建dak
和san
变量以检查该值是否为数字,如果是,则在其左侧添加0
。
所以除了d < 0
时停止,它才能完美。它倒数到00:00
然后显示
0-1:59
,然后是undefined:undefined
。
请帮帮我,我找不到有什么问题。
答案 0 :(得分:3)
setInterval返回间隔的标识符
var myInterval = setInterval(functime, 1000);
这个数字标识符应该作为参数传递给clearInterval
clearInterval(myInterval);
更新:你的代码太复杂了。你有太多的嵌套if / else,所以它让你理解起来很复杂。您应该创建几个简单的函数来隔离具有特定职责的小块代码。例如:
var s = <?php echo $lefttime; ?>; //s stands for seconds
var d = Math.floor(s/60); //d stands for minutes
s -= d * 60;
update(d, s);
if(d >= 0) {
var myInterval = setInterval(functime, 1000);
}
else {
finish();
}
function functime() {
s--;
if(s < 0 ) {
d--;
if (d < 0 ) {
clearInterval(myInterval);
finish();
return;
}
else {
s = 59;
}
}
update(d, s);
}
function format(value) {
if(value < 10) {
return '0' + value;
}
return value;
}
function update(d, s) {
var san = format(s);
var dak = format(d);
document.getElementById('id').innerHTML = dak + ":" + san;
}
function finish() {
document.getElementById('id').innerHTML = "over";
}