2015-10-11 4 views
2
var timer; 

function startTimer(secs, elem) { 
    var element = document.getElementById(elem); 
    var randomclick = Math.floor(Math.random() * 4 + 1); 


    if (secs > 9) { 
     element.innerHTML = "0:" + secs; 
    } else if (secs > -1) { 
     element.innerHTML = "0:0" + secs; 
    } else if (secs < -1) { 
     clearTimeout(timer); 
     `` 
     alert(randomclick); 

     if (randomclick == 1) { 
      buttonAPress(); 
     } 
     if (randomclick == 2) { 
      buttonBPress(); 
     } 
     if (randomclick == 3) { 
      buttonCPress(); 
     } 
     if (randomclick == 4) { 
      buttonDPress(); 
     } 

    } 
    secs--; 
    timer = setTimeout('startTimer(' + secs + ',"' + elem + '")', 1000); 
} 

Когда я запускаю функцию, все, кажется, идет хорошо, за исключением того, что функция продолжает повторяться, несмотря на меня, используя clearTimeout (таймер); Что я делаю не так?моя функция clearTimeout не работает

+0

Вы можете разместить остальную часть кода? –

+0

Итак, как я могу установить таймер вне функции и все равно получить цикл? – Flopa95

ответ

1

Попробуйте, здесь JSFiddle

var timer; 
 

 
function startTimer(secs, elem) { 
 
    var element = document.getElementById(elem); 
 
    var randomclick = Math.floor(Math.random() * 4 + 1); 
 

 
    if (secs > 9) { 
 
     element.innerHTML = "0:" + secs; 
 
    } else if (secs > -1) { 
 
     element.innerHTML = "0:0" + secs; 
 
    } else if (secs < -1) { 
 
     clearTimeout(timer); 
 
     alert(randomclick); 
 

 
     if (randomclick == 1) { 
 
      buttonAPress(); 
 
     } 
 
     if (randomclick == 2) { 
 
      buttonBPress(); 
 
     } 
 
     if (randomclick == 3) { 
 
      buttonCPress(); 
 
     } 
 
     if (randomclick == 4) { 
 
      buttonDPress(); 
 
     } 
 
    } 
 

 
    secs = secs - 1; 
 
    timer = setTimeout(function() { 
 
     startTimer(secs, elem) 
 
    }, 1000); 
 
} 
 

 
startTimer(10, 'myDiv');
<div id='myDiv'></div>

0

var timer;  
 
var el = document.getElementById('el'); 
 

 
function startTimer(secs,elem){ 
 
var element = document.getElementById(elem); 
 
var randomclick = Math.floor(Math.random()*4+1); 
 

 

 
if (secs > 9){ 
 
    element.innerHTML = "0:" + secs; 
 
} 
 
else if (secs > -1){ 
 
    element.innerHTML = "0:0" + secs; 
 
} 
 
else if(secs < -1){ 
 
    clearTimeout (timer);// `` <============ typo ?? 
 
    alert ('randomclick => ' + randomclick + ' \nit works'); 
 

 
    if (randomclick == 1){buttonAPress();} 
 
    if (randomclick == 2){buttonBPress();} 
 
    if (randomclick == 3){buttonCPress();} 
 
    if (randomclick == 4){buttonDPress();} 
 

 
} 
 
secs--; 
 
timer = setTimeout('startTimer('+secs+',"'+elem+'")',1000); 
 

 

 
} 
 
startTimer(12 , 'el')
<div id='el'>p</div>

Может опечатка

Не вижу проблемы и все работает хорошо!

Смежные вопросы