2016-10-20 17 views
0
ここでのコードの構造については

`document.getElementById`をグローバル変数に設定できないのはなぜですか?

var mydo=sessionStorage.getItem("action"); 
function to_delete(){ 
    var _table=document.getElementById("showTable"); 
    //omit 
    } 
window.onload=function(){ 
    to_delete(); 
    } 

私は望ましい結果を得ることができます。

var mydo=sessionStorage.getItem("action"); 
var _table=document.getElementById("showTable"); 
function to_delete(){ 
    //omit 
    } 
window.onload=function(){ 
    to_delete(); 
    } 

エラーが発生し、TypeError: _table is null: は今、以下のようにコードの構造を書き換えます。
なぜグローバル変数をするdocument.getElementByIdを設定することはできませんか?あなたのリライトで

+0

それがグローバルであることについてではありません。要素が作成される前に変数を設定しようとしています。だから、あなたは荷物を待つ必要があります。 –

答えて

5

そう要素が存在しない文書がロードされる前var _table=document.getElementById("showTable");実行されます。

代わりに、関数の外でグローバルvar _table;を宣言し、Loadイベントで、それに割り当てます。

+0

または、ページ本文の最後に(または要素定義の直後に)スクリプトを配置します。 – BackSlash

関連する問題