需要单击两次才能启动功能(javascript)

时间:2017-11-06 11:48:11

标签: javascript timer countdown

为什么我必须点击两次才能启动计时器? 有时它第一次工作,有时不工作。当我清除缓存时,我需要点击两次。 我阻止了......

我的代码

var COUNT_START = 10 * 1 * 60;
var count = COUNT_START;
var playing = false;
var play = document.getElementById('Reservation');
var reset = document.getElementById('annuler');

$('#count-timer').hide();

play.onclick = function () {
    if ((!playing) && (sessionStorage.length > 0) && (empty > 5)) {
        playing = true;
        $('#count-timer').fadeIn(1000);
    }
    count = COUNT_START;
};

reset.onclick = function () {
    if (playing) {
        playing = false;
    }
    sessionStorage.clear('nom_station');
    if (sessionStorage.length > 1) {
        $('#title-reservation').text('Votre réservation a bien été annulée');
    }
    count = COUNT_START;
};

function countdown() {
    displayTime();
    if (count == 0) {
        playing = false;
        sessionStorage.clear('nom_station');
        $('#title-reservation').text('Votre réservation a expirée')
        $('#count-timer').fadeOut(1000);
    } else if (playing) {
        setTimeout(countdown, 100);
        count--;
    } else {
        setTimeout(countdown, 100);
    }
}

countdown();

function displayTime() {
    var mill = count;
    var sec = Math.floor(mill / 10);
    var hours = Math.floor(sec / 3600);
    sec -= hours * (3600);
    var mins = Math.floor(sec / 60);
    sec -= mins * (60);

    if (mins > 1) {
        document.getElementById('count-timer').innerHTML = 'Votre réservation expire dans : ' + LeadingZero(mins) + ' minute(s) ' + ' et ' + LeadingZero(sec) + ' seconde(s) ';
    }
    else {
        document.getElementById('count-timer').innerHTML = 'Votre réservation expire dans : ' + hours + ':' + LeadingZero(mins) + ':' + LeadingZero(sec);
    }
}

function LeadingZero(Time) {
    return (Time < 10) ? "0" + Time : +Time;
}

第二次,我需要在sessionStorage中保存我的计时器,这样做的最佳方法是什么? 如果用户refesh页面,计时器仍然继续。 谢谢:))

1 个答案:

答案 0 :(得分:0)

第一次单击时绑定侦听器,然后它开始工作。这就是为什么需要两次