2016-01-05 3 views
0

все! Я новичок в JavaScript.JavaScript таймер работает только один раз + bootstrap 3 мода

Я делаю онлайн-тест, где во время теста выскакивают вопросы несколько раз. У каждого вопроса должен быть таймер. К сожалению, мой таймер работает только во время первого вопроса.

<button type="button" class="btn btn-default btn-lg" id="timer">10</button> 

Вот мой таймер():

function timer(){ 
    var obj=document.getElementById('timer'); 
    obj.innerHTML--; 

    if(obj.innerHTML<=3){ 
     $('#timer').removeClass("btn-default"); 
     $('#timer').addClass("btn-danger"); 
    } 

    if(obj.innerHTML==0){ 
     $('#myModalTest').modal('hide'); 
     setTimeout(function(){},1000); 
     play(); 
    } 
    else{setTimeout(timer,1000);} 
} 

Вот как мои вопросы всплывают:

$("#start").click(function() { 
    setTimeout(function() { 
     pause(); 
     $('.test1').modal('show'); 
     setTimeout(timer,1000); 
    }, 10000);  
}); 

$("#continue1").click(function() { 
    setTimeout(function() { 
     pause(); 
     $('.test2').modal('show'); 
     setTimeout(timer,1000); 
    }, 10000); 
}); 

На .test2 таймера всегда 10 и не работает.

Также мне интересно, как сделать следующий вопрос всплывающим, если пользователь ничего не нажал, а таймер пришел к 0, а модальный скрыт.

Благодарим вас за внимание и внимание.

+0

У вашего кода есть некоторые основные недостатки, начинающиеся с 'obj.innerHTML -;' и 'obj.innerHTML == 0' Это не имеет никакого смысла, поскольку вы рассматриваете их как числовое глобальное число, которое они НЕ. См. Https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML. Кроме того, вы должны показать некоторую разметку, связанную с этим вопросом, а также код для 'play()', ' pause(); 'и т. д. Вы скрываете два модала, но показываете пыльник в функции« таймер », которая кажется логической ошибкой в ​​этом ограниченном наборе кода. –

ответ

0

Я попытался воспроизвести вашу проблему в этом jsbin, и я не уверен, что то, что я сделал, было тем, что вы хотели. Попробуйте и дайте мне отзыв.

Я думаю, что ваш вопрос был здесь:

function timer(){ 

    if(obj.innerHTML==0){ 
     ... 
    } 
    else{setTimeout(timer,1000);} // here 
} 

если obj.innerHTML !== 0 собирается позвонить timer каждый второй, и это может быть закрытие каждого всплывают открытии ... но я не уверен, потому что я не имеют всего кода.

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