为什么不能将`document.getElementById`设置为全局变量?

问题描述:

的代码结构在这里为什么不能将`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。 –

在您的重写var _table=document.getElementById("showTable");在文档加载之前运行,因此该元素不存在。

取而代之的是在函数之外声明全局var _table;并在加载事件中分配给它。

+0

或者将脚本放在页面主体的末尾(或者在元素定义之后) – BackSlash