2016-10-20 78 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

這不關乎它是全球性的。您正在嘗試在元素創建之前設置該變量。這就是爲什麼你需要等待onload。 –

回答

5

在您的重寫var _table=document.getElementById("showTable");在文檔加載之前運行,因此該元素不存在。

取而代之的是在函數之外聲明全局var _table;並在加載事件中分配給它。

+0

或者將腳本放在頁面主體的末尾(或者在元素定義之後) – BackSlash

相關問題