为什么不能将`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
为全局变量?
答
在您的重写var _table=document.getElementById("showTable");
在文档加载之前运行,因此该元素不存在。
取而代之的是在函数之外声明全局var _table;
并在加载事件中分配给它。
+0
或者将脚本放在页面主体的末尾(或者在元素定义之后) – BackSlash
这不关乎它是全球性的。您正在尝试在元素创建之前设置该变量。这就是为什么你需要等待onload。 –