简单的事件监听器无法正常工作 - JS

时间:2013-07-18 07:25:11

标签: javascript html dom addeventlistener

我已经编写了一个简单的简单事件监听器,但却出现了错误:Uncaught TypeError: Cannot call method 'addEventListener' of null这表明它与id有关(也可以与document一起使用?

<html>
<head>
    <script type="text/javascript">
        function message () {
        alert("Hello!");
        }
        var button = document.getElementById('button');
        button.addEventListener('click', message, true);
    </script>
</head>
<body>
    <input type="button" id="button" value="Click me!" />
</body>
</html>

(我知道在此之后我会感到愚蠢,但我是一个JS菜鸟)

2 个答案:

答案 0 :(得分:12)

在脚本执行时,尚未创建DOM。您可以在阅读html后将脚本放在body标签之后运行它 - 但更好的方法是通过监听DOMContentLoaded

document.addEventListener('DOMContentLoaded', init, false);
function init(){
  function message () {
    alert("Hello!");
  }
  var button = document.getElementById('button');
  button.addEventListener('click', message, true);
};

window.onload = init也有效。我不喜欢它,因为它看起来像一个脚本可以覆盖window.onload成为它自己的init函数。 (我还没有确认是否发生过这种情况)

答案 1 :(得分:2)

因为尚未加载body时执行此脚本。使用onload事件,并在其中粘贴您的代码。