使用JQuery replaceWith和JavaScript变量

时间:2011-02-12 07:11:52

标签: javascript jquery html

这是我的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 ...,未开始消失。

2 个答案:

答案 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);