次のコードを使用します。
HTML
<button id="button>click me</button>
JS - バージョン 1
window.onload = init;
function init() {
console.log('init called');
var button = document.getElementById('button');
button.onclick = buttonClickHandler;
}
function buttonClickHandler() {
console.log('button clicked');
}
vs 同じ HTML
JS - バージョン 2
window.onload = init();
どちらの場合も、'init called' が「すぐに」コンソールに表示されますが、2 番目のケースでは、ボタンが null であることを示すエラーが続きます。
ここでは 2 つのことが行われます。1) バージョン 1 では、DOM がロードされるのを待ちます。2) バージョン 2 では、DOM がロードされる前に発生しているように見えます。
私の質問。バージョン 1 で何が起きているのか、バージョン 2 で何が起きているのかをできるだけ明確に説明してwindow.onload = init
くださいwindow.onload = init()
。また、各バージョンの動作について説明してください。なぜ 1 は待機するのに 2 は待機しないのですか?
スクリプトはボタン要素の前に配置する必要があります (例: head: http://jsfiddle.net/XMEjr/1/ )。