2017-07-20 1 views
0

J'apprends du JavaScript et j'expérimente avec un simple compte à rebours. Le compte à rebours échoue si j'insère checkTime() dans la fonction timedCount(). Je veux que le script affiche un message dans le div 'warning', quand les secondes restantes (var c) sont des entiers donnés (dans ce cas 100 sec). Lorsque j'insère la fonction checkTime(), le script affiche 100 et s'arrête. Il fait la même chose quand je mets la fonction dans la fonction timeCount(). Je suis perplexe!simple timer- pourquoi un appel de fonction à l'intérieur d'une fonction utilisant setTimeout() échoue?

var c = 120; 
 
var t; 
 
var timer_is_on = 0; 
 
start.onclick = startCount; 
 
reset.onclick = resetCount; 
 

 
function timedCount() { 
 
    document.getElementById("clock").innerHTML = c; 
 
    c = c - 1; 
 
    checkTime(); 
 
    t = setTimeout(function() { 
 
    timedCount() 
 
    }, 1000); 
 
} 
 

 
function startCount() { 
 
    if (!timer_is_on) { 
 
    timer_is_on = 1; 
 
    timedCount(); 
 
    document.getElementById('start').style.display = 'none'; 
 
    document.getElementById('reset').style.display = 'none'; 
 
    document.getElementById('stop').style.display = 'block'; 
 
    } 
 
} 
 

 
function stopCount() { 
 
    clearTimeout(t); 
 
    timer_is_on = 0; 
 
    document.getElementById('start').style.display = 'block'; 
 
    document.getElementById("start").innerHTML = "Resume"; 
 
    document.getElementById('reset').style.display = 'block'; 
 
    document.getElementById('stop').style.display = 'none'; 
 

 
} 
 

 
function resetCount() { 
 
    clearTimeout(t); 
 
    c = 0; 
 
    timer_is_on = 0; 
 
    document.getElementById("txt").value = 0; 
 
    document.getElementById('start').style.display = 'block'; 
 
    document.getElementById("start").innerHTML = "Start!"; 
 

 
} 
 

 
function checkTime() { 
 
    if (c = 100) { 
 
    document.getElementById("warning").innerHTML = "Time nearly up!"; 
 
    } 
 
}
<div style="font-size:30px;"><span id="clock">0</span> 
 
    <span>:seconds</span></div> 
 
<div id="warning"></div> 
 
<button id="start">Start count!</button> 
 
<button id="stop" onclick="stopCount()">Pause!</button> 
 
<button id="reset">Reset!</button>

+3

'c = 100' est l'affectation' c == 100' teste l'égalité; 'c === 100' teste le type et l'égalité – mplungjan

+1

C'est un TYPO,' si (c = 100) {'devrait être' si (c === 100) {' – adeneo

+0

merci. C'est le 5am commence qui le fait. J'aime ce site. –

Répondre

0

(c = 100) devrait être (c === 100), vous essayez de définir quand vous voulez dire pour vérifier l'égalité.