这是我的html:
<div class="timer">Not Started</div>
和JS / JQ:
var seconds = 10;
var minutes = 0;
setTimeout("updateTimer()", 1000);
function updateTimer() {
if (seconds == 0 && minutes != 0) {
minutes -= minutes;
seconds = 59;
alert (seconds);
} else if (seconds == 1 && minutes == 0) {
alert ('done');
} else {
seconds = seconds - 1;
//alert (seconds);
$(".timer").replaceWith(seconds);
}
setTimeout("updateTimer()", 1000);
}
而不是替换未开始的10,9,8 ...,未开始消失。
答案 0 :(得分:2)
$(".timer").text(seconds);
您不能用字符串替换DOM节点。
查看example。
您可以通过使用setInterval
代替setTimeout
来进一步简化逻辑,并使用总秒数来简化计算并删除分钟。
var seconds = 10, minutes = 0;
var totalSeconds = (minutes * 60) + seconds;
var timerId = setInterval(updateTimer, 1000);
function updateTimer() {
$('.timer').text(totalSeconds % 60);
if (totalSeconds == 0) {
alert("done");
clearInterval(timerId);
}
totalSeconds--;
}
答案 1 :(得分:0)
replaceWith将替换整个div,而不仅仅是内容。试试这个:
$(".timer").html(seconds);