我正在尝试按照 jsfiddle 示例在 javascript 中创建时间:
现在显然 jsfiddle 中的计时器工作正常。但我遇到的问题是计时器启动的时间来自 mysqli/php 变量,它从数据库中检索时间。
所以除了:
<span id="countdown">01:30:10</span>
我必须把它当作:
echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";
和
除了:
var time = "01:30:10",
我必须把它当作:
var time = <?php echo json_encode($dbSessionDuration); ?>,
现在我没有收到任何错误,但实际情况是计时器没有进行倒计时。我的问题是为什么不倒计时?来自变量的时间示例可以是 01:00:00
。
下面是函数的代码:
echo "<p><span id='countdown'>" . $dbSessionDuration . "</span></p>";
...
<script type="text/javascript">
(function(){
$(document).ready(function() {
var time = <?php echo json_encode($dbSessionDuration); ?>,
parts = time.split(':'),
hours = +parts[0],
minutes = +parts[1],
seconds = +parts[2],
span = $('#countdown');
function correctNum(num) {
return (num<10)? ("0"+num):num;
}
var timer = setInterval(function(){
seconds--;
if(seconds == -1) {
seconds = 59;
minutes--;
if(minutes == -1) {
minutes = 59;
hours--;
if(hours==-1) {
alert("timer finished");
clearInterval(timer);
return;
}
}
}
span.text(correctNum(hours) + ":" + correctNum(minutes) + ":" + correctNum(seconds));
}, 1000);
});
});
</script>
最佳答案
改变这个:
});
});
</script>
为此:
});
})(); // ← note the extra parentheses
</script>
以便您实际上调用您的匿名函数。 (或者,您可以简单地完全删除它的 (function(){
和 });
。根本没有理由将此代码放在函数中。)
关于php - 从数据库中检索时间时,javascript 计时器不倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740992/