Sergomen
@Sergomen
Просто делай добро и оно вернётся

Почему не работает addEventListener?

Я делаю функцию удаления сообщений в своём чате но js почему-то не находит addEventListener

Лог ошибки:
jquery-3.1.0.min.js:2 jQuery.Deferred exception: Cannot read property 'addEventListener' of null TypeError: Cannot read property 'addEventListener' of null
    at HTMLDocument.<anonymous> (http://1-4at/res/scripts/chat2.js:240:15)
    at j (http://1-4at/res/lib/jquery-3.1.0.min.js:2:29568)
    at k (http://1-4at/res/lib/jquery-3.1.0.min.js:2:29882) undefined
r.Deferred.exceptionHook @ jquery-3.1.0.min.js:2
k @ jquery-3.1.0.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
fire @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
ready @ jquery-3.1.0.min.js:2
R @ jquery-3.1.0.min.js:2
jquery-3.1.0.min.js:2 Uncaught TypeError: Cannot read property 'addEventListener' of null
    at HTMLDocument.<anonymous> (chat2.js:240)
    at j (jquery-3.1.0.min.js:2)
    at k (jquery-3.1.0.min.js:2)
(anonymous) @ chat2.js:240
j @ jquery-3.1.0.min.js:2
k @ jquery-3.1.0.min.js:2
setTimeout (async)
r.readyException @ jquery-3.1.0.min.js:2
(anonymous) @ jquery-3.1.0.min.js:2
j @ jquery-3.1.0.min.js:2
k @ jquery-3.1.0.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
fire @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
k @ jquery-3.1.0.min.js:2
setTimeout (async)
(anonymous) @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
fire @ jquery-3.1.0.min.js:2
i @ jquery-3.1.0.min.js:2
fireWith @ jquery-3.1.0.min.js:2
ready @ jquery-3.1.0.min.js:2
R @ jquery-3.1.0.min.js:2

Скрипт:
var mesdelete = document.getElementById("1");
    mesdelete.addEventListener("click", delete_message);
    function delete_message(){
        var messID = mesdelete.id;
         $(document).ready(function(){
                $.ajax({
                    url:"delete.php",
                    type:"POST",
                    data: ({deleteID: messID}),
                    dataType:"html",
                    success:deleteend
                }); 
            });
    }


Может быть это из-за того что я каждую секунду загружаю сообщения в чат?
  • Вопрос задан
  • 465 просмотров
Решения вопроса 1
Sergomen
@Sergomen Автор вопроса
Просто делай добро и оно вернётся
Уже всё решил - проблема была в том что я эту функцию в другой функции написал. Теперь когда я переместил её ниже всё норм
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Seasle
@Seasle Куратор тега JavaScript
А что в mesdelete?
Ответ написан
@carbanak01
mesdelete.on("click", delete_message);
Я конечно не фанат JQuery, но попробуй так
Ответ написан
erniesto77
@erniesto77
oop, rb, py, php, js
вы пытаетесь выполнить функцию от null значения
хоть null и объект, но у него нет и никогда не было функции addEventListener впрочем никакую функцию не вызвать
Ответ написан
У вас какойто срач а не кусок кода
Вот тут
var mesdelete = document.getElementById("1");
    mesdelete.addEventListener("click", delete_message);
    function delete_message(){
        var messID = mesdelete.id;
       ...
    }

У вас ванильный JS без jquery, при этом внутри события delete_message вы вполне себе имеете доступ к элементу mesdelete через this но почемуто вяжете получение messID на глобальную переменную, значение в которой к моменту выполнения скрипта вполне себе может поменяться
Внутри события вы херачете
$(document).ready(function(){
                ...
            });


$(document).ready это тоже событие, при чем контролируется через jquery и выполняется в момент загрузки документа https://api.jquery.com/ready/ откройте доку почитайте как выдумаете, на момент клика по элементу с ID 1 страница загружена или нет? Обычно в ванильном js весь код, который работает с визуалкой помещают в window.onload или $(document).ready если jquery, но смысл писать ивентхендлер в ивент хендлере мне не ясен.
При этом в вашем отрывке не видно ни что стоит до этого чуда, ни самого html кода, поэтому совершенно не ясно что вы пытаетесь выбрать вот тут var mesdelete = document.getElementById("1"); и есть ли у вас этот элемент
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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