@valitskiydmitriy

После проверки на наличие элемента ошибка Cannot read property?

Здесь подсказали как сделать проверку на наличие элемента, ошибка была решена но появилась новая, вот полный код скрипта:
window.onload = function () {
    var day = new Date,
        md = (new Date(day.getFullYear(), day.getMonth() + 1, 0, 0, 0, 0, 0)).getDate(),
        $month_name = "января февраля марта апреля мая июня июля августа сентября октября ноября декабря".split(" ");

        function set_select(a, c, d, e) {
            var el = document.getElementsByName(a)[0];

            if (!el) {
                console.warn('Element "' + a + '" not found');
                return;
            }

            for (var b = el.options.length = 0; b < c; b++) {
                el.options[b] = new Option(a == 'month' ? $month_name[b] : b + d, b + d);
            }

            el.options[e] && (el.options[e].selected = !0)
        }
    set_select("day", md, 1, day.getDate() - 1);
    set_select("month", 12, 1, day.getMonth());
    set_select("year", 50, day.getFullYear()-50, 50);


    var year = document.getElementById('year');
    var month = document.getElementById("month");

    function check_date() {
        var a = year.value | 0,
            c = month.value | 0;
        md = (new Date(a, c, 0, 0, 0, 0, 0)).getDate();
        a = document.getElementById("day").selectedIndex;
        set_select("day", md, 1, a)
    };

    if (document.addEventListener) {
        year.addEventListener('change', check_date, false);
        month.addEventListener('change', check_date, false);

    } else {
        year.detachEvent('onchange', check_date);
        month.detachEvent('onchange', check_date);
    }

}


Ошибка:
Uncaught TypeError: Cannot read property 'addEventListener' of null
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Тоже самое же - вы не проверяете есть ли на странице элементы с id year и month прежде чем навешивать на них обработчики.
Алгоритм решения очень прост:
1. Ищете все места, где используется функция addEventListener (ну а правильнее, конечно, прямо в консоли посмотреть конкретный файл и строку).
2. Смотрите, при каких условиях переменная, на которой вызывается этот метод может быть null.
3. Добавляете необходимые проверки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы