2014-10-04 3 views
0

При управлении ниже коды, получить следующее сообщение об ошибке - «неперехваченный TypeError: Невозможно установить свойство„OnClick“нулевой»Javascript OnClick событие не работает

<!DOCTYPE html> 
<html> 
<head> 
<script> 
document.getElementById("x").onclick = function() { 
alert("clicked the button"); 
}; 
</script> 
</head> 
<body> 
<button id="x">this is button</button> 
</body> 
</html> 

ответ

0

Вам нужно настроить приемник событий:

var button = document.getElementById('x'); 

button.addEventListener('click', function() { 
    console.log('button clicked');  
}); 
+0

Uncaught TypeError: Не удается прочитать свойство «addEventListener» нуль является ошибкой является выброшены. Я запускаю вышеуказанный код в редакторе w3school. –

+0

a ... durp ... действительно, вы пытаетесь добраться до DOM до его готовности. переместите свой скрипт из головы и в конец тела –

0

Необходимо выполнить миграцию элемента <script> после <button>. Ошибка выбрасывается, потому что getElementById возвращает null так как он не смог найти элемент #x, так как элемент button#x еще не был достигнут в этот момент.

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
<body> 
    <button id="x">this is button</button> 
    <script> 
     document.getElementById("x").onclick = function() { 
      alert("clicked the button"); 
     }; 
    </script> 
</body> 
</html> 
+0

Его работа! будет принимать ваш ответ немного. Пожалуйста, объясните, как это имеет значение. Моя хорошо выглядит, верно :? –

+0

Поскольку dom не загружается, когда вы получаете элемент, поэтому вы не можете получить кнопку dom в скрипте. Правильный способ - записать скриптовый тег после dom или записать метод get element в window.onload. – kenticny

+0

@kenticny Я думаю, что вы отвечали на OP, в этом случае, пожалуйста, используйте '@' упоминание, потому что вместо этого я получил уведомление :) –

2

Вы не можете получить элемент по идентификатору, потому что документ не загружен.

пытается добавить OnLoad функции:

window.onload = function() { 
    document.getElementById("x").onclick = function() { 
    alert("clicked the button"); 
    }; 
}; 
+1

это решение в порядке. Но у меня есть дополнительное предположение, что вы должны положить после элемента . Пожалуйста, google, вы узнаете, почему. – Kai

1

Вы пытаетесь связать событие щелчка до того, существует кнопка в DOM. Либо двигайте событие щелчка привязки к нижней части тела, изменения его следующим образом:

<button id="x" onClick="alert('clicked the button');">this is button</button>

Приветствия, autoboxer

Смежные вопросы