11

私は信じられないほど単純なイベントリスナーを作成しましたが、それでもエラーが発生します。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初心者です)

4

2 に答える 2

17

スクリプトの実行時には、DOM は作成されていません。body タグの後にスクリプトを配置して、html を読んだ後にスクリプトを実行することもできますが、それを行うより良い方法は、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あまりにも動作します。1 つのスクリプトが window.onload を上書きして独自の init 関数にできるように見えるので、私はそれが好きではありません。(発生するかどうかは確認していません)

于 2013-07-18T07:28:33.573 に答える