2011-02-12 3 views
0

Voici mon html:Utilisation de JQuery replaceWith avec JavaScript variable

<div class="timer">Not Started</div> 

Et 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); 

    } 

au lieu de remplacer Non commencé avec 10, 9, 8 ..., Non Started disparaît.

+0

Si vous utilisez Firefox, installez FireBug add-on, après cela le plus facile de trouver ce genre d'erreurs – ksimon

Répondre

2
$(".timer").text(seconds); 

Vous ne pouvez pas remplacer un noeud DOM par une chaîne.

Voir example.

Vous pouvez simplifier davantage votre logique en utilisant setInterval au lieu de setTimeout, et utiliser le total des secondes pour faciliter les calculs et supprimer les minutes.

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

RemplacerWith remplacera la div entière, pas seulement le contenu. Essayez ceci à la place:

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