Счетчик JavaScript не работает

0

Я сделал счетчик JavaScript следующим образом:

window.onload = function(){
    var target_date = new Date("Aug, 15, 2019").getTime();
}
var days, hours, minutes, seconds;
var countdown = document.getElementById("countdown");

setInterval(function (){
    var current_date = new Date().getTime();
    var seconds_left = (target_date - current_date) / 1000;

    days = parseInt(seconds_left / 86400);
    seconds_left = seconds_left % 86400;

    hours = parseInt(seconds_left / 3600);
    seconds_left = seconds_left % 3600;

    minutes = parseInt(seconds_left / 60);
    seconds = parseInt(seconds_left % 60);

    countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
}, 1000); 

HTML:

<span id="countdown"></span>

Браузер (Google Chorme) говорит:

Uncaught ReferenceError: target_date is not defined

Даже если я удалю window.onload = function(){}, все равно не будет работать. Что я сделал не так?

  • 0
    объявить target_date вне области window.onload
  • 0
    Когда я удалил window.onload, он работал нормально - jsfiddle.net/dangoodspeed/6Xj5c
Теги:

3 ответа

0
Лучший ответ

Измените свой первый "}" до конца скрипта

window.onload = function(){
            var target_date = new Date("Aug, 15, 2019").getTime();

        var days, hours, minutes, seconds;
        var countdown = document.getElementById("countdown");

        setInterval(function (){
            var current_date = new Date().getTime();
            var seconds_left = (target_date - current_date) / 1000;

            days = parseInt(seconds_left / 86400);
            seconds_left = seconds_left % 86400;

            hours = parseInt(seconds_left / 3600);
            seconds_left = seconds_left % 3600;

            minutes = parseInt(seconds_left / 60);
            seconds = parseInt(seconds_left % 60);

            countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
        }, 1000); 
        }
3

Все это связано с переменным объемом. Здесь ваш target_date определен в вашем window.onload, что делает его локальным для этой функции. Если вы хотите использовать переменную вне этой функции, объявите ее глобально, переместив ее за пределы функции:

var target_date; /* Declared globally. */
window.onload = function(){
    target_date = new Date("Aug, 15, 2019").getTime();
}
0

Просто переместите фигурные скобки "}" окна. Загрузка в конец скрипта

window.onload = function(){
    var target_date = new Date("Aug, 15, 2019").getTime();
    var days, hours, minutes, seconds;
    var countdown = document.getElementById("countdown");

    setInterval(function (){
        var current_date = new Date().getTime();
        var seconds_left = (target_date - current_date) / 1000;

        days = parseInt(seconds_left / 86400);
        seconds_left = seconds_left % 86400;
        hours = parseInt(seconds_left / 3600);
        seconds_left = seconds_left % 3600;

        minutes = parseInt(seconds_left / 60);
        seconds = parseInt(seconds_left % 60);

        countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
    }, 1000);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню