Uncaught TypeError: Cannot set property 'onClick' of null.

4467 ワード

Chromeブラウザの下で、このエラーメッセージに遭遇しました:Uncaaught Type Error:Cannot set property'onClick'of null.
まずJSのコードを貼ります
document.getElementById("#register button").onclick=function(){
    alert('222');
}

後で調べたのは私のJSファイルの導入順序がラベルのロードより早いためで、so、jsファイルの導入をbodyの下に置いたが、依然として報告が間違っている.複数のクエリの解決策は次のとおりです.
WebページのjavaScriptスクリプトコードは、ドキュメントのロードが完了してから実行する必要がある場合が多い.そうしないと、オブジェクトが取得できない場合がある.このような場合を避けるために、windowを使用することができる.onloadはスクリプトコードを実行します.window.onloadは、ドキュメントのロードが完了するとイベントがトリガーされ、このイベントにイベント処理関数を登録し、実行するスクリプトコードをイベント処理関数に配置することで、オブジェクトが取得されないことを回避できます.1:window.οnlοad=function(){}をwindowとして使用する.onloadイベントはイベント処理関数をバインドし、ここでは匿名関数をバインドし、もちろん非匿名関数をバインドすることもできます.2:addEventListener()とattachEvent()はonloadイベントバインドイベント処理関数であり、addEventListener()は現在標準的なイベント処理関数バインド方式であるが、IE 8とIE 8以下のブラウザではサポートされていない(addEventListener(「type」、関数名、false)).
この場合,1つ目の方法で問題を解決することができ,複数のイベントのバインドを処理するには,2つ目の方法を用いる.
//方法一:
window.onload = function () {
    document.getElementById("register").onclick=function(){
        alert('222');
    }
}
//方法2:(各ブラウザをサポート)
//   
if(window.addEventListener){
    window.addEventListener("load",alert1,false);
    window.addEventListener("load",alert2,false);
}
else{
    window.attachEvent("onload",alert1);
    window.attachEvent("onload",alert2);
}

function alert1(){
    document.getElementById("register").onclick=function () {
        alert('  1');
    };
}

function alert2(){
    document.getElementById("register").onclick=function () {
        alert('  2);
    };
}