Задать вопрос
@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
  • Вопрос задан
  • 332 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Тоже самое же - вы не проверяете есть ли на странице элементы с id year и month прежде чем навешивать на них обработчики.
Алгоритм решения очень прост:
1. Ищете все места, где используется функция addEventListener (ну а правильнее, конечно, прямо в консоли посмотреть конкретный файл и строку).
2. Смотрите, при каких условиях переменная, на которой вызывается этот метод может быть null.
3. Добавляете необходимые проверки.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы