Uncaught TypeError: Невозможно установить свойство ‘onclick’ из null

Я создаю HTML-страницу, которая создается с помощью бутстрапа. Вот окончательный код HTML и код файла hello.js:

Когда я нажимаю на кнопку, используя субменю, вместо предупреждения, я получаю ошибку

Uncaught TypeError: Невозможно установить свойство ‘onclick’ из null

Может кто-нибудь рассказать, почему я столкнулся с этой ошибкой? Помогите решить проблему.

Кажется, проблема заключается в том, что вы выполняете скрипт перед загрузкой элемента.

Я предполагаю, что этот скрипт добавлен в файл hello.js который добавляется до создания DOM.

Решением здесь является выполнение скрипта после того, как DOM будет готов:

 window.onload = function(){ document.getElementById("subm").onclick=function(){ alert("Hello WOrld"); } } 

Весь код JavaScript, который имеет дело с элементами DOM, такими как выше, должен выполняться только после загрузки DOM.

Демо: скрипка

Как я вижу, вы используете JQuery, затем используете функцию jQuery, почему вы используете javascript.

Вот код, который вы хотите:

 $(document).ready(function(){ $("#subm").click(function(){ alert("Hello World"); }); }); 

Вероятно, это происходит потому, что сценарий запускается до загрузки DOM.

Попробуйте поместить скрипт в

 window.onload = function() { {your code} } 

window.onload () не решила мою проблему, поэтому мне пришлось написать код, чтобы дождаться загрузки элемента. Вы можете сделать что-то вроде этого:

 function waitForLoad(id, callback){ var timer = setInterval(function(){ if(document.getElementById(id)){ clearInterval(timer); callback(); } }, 100); } waitForLoad("subm", function(){ console.log("load successful, you can proceed!!"); document.getElementById("subm").onclick = function() { alert("I got clicked"); } }); 

У меня была аналогичная проблема … Для меня это работало со следующим кодом

 $(document).on('click','#subm',function() { alert("Hello World"); });