2011-02-12 39 views
0

這裏是我的html:使用jQuery replaceWith用JavaScript變數

<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

如果您使用的是Firefox,請安裝FireBug附加組件,然後最簡單地找到這種錯誤 – ksimon

回答

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--; 
} 
0

replaceWith將替換整個div,而不僅僅是內容。試試這個:

$(".timer").html(seconds);