这里的初学者...... 我错过了什么?
我定义一个全局变量,它是对html元素的引用:
var x=document.getElementById("xxx1");
然后,在函数内部尝试引用该变量来导航dom:
x.innerHTML="dsfgfdgdf";
......不起作用;如果我在它工作的函数内定义变量,但我不知道它是如何作为范围问题...在函数内部使用全局变量工作正常如果我不在dom上下文中使用它们(object.property)< / p>
感谢
答案 0 :(得分:2)
在加载DOM之前是否执行了getElementById? (你应该等待domready或onload)
是否有可能在某些其他功能中覆盖该值?
答案 1 :(得分:2)
这不是范围问题。
最可能的原因是在创建变量时元素尚不存在。您必须在您要访问的元素之后放置创建变量的脚本元素,因为代码将在页面加载时运行。
另一种方法是全局声明变量,并从页面加载后运行的onload事件中设置它:
<script>
var x;
function init() {
x = document.getElementById('xxx1');
}
</script>
<body onload="init();">
答案 2 :(得分:1)
我认为问题可能是,如果您全局声明该变量,那么在评估该行时,DOM不会被完全加载,因此该元素不可访问。
当你在函数中声明它时,只有当你调用那个函数时才会创建变量,而DOM很可能已经完全加载了。
答案 3 :(得分:1)
当您调用getElementById时,可能您的页面未完全加载。
确保在页面加载完成后创建全局变量x。大多数库都有办法处理它,例如jQuery具有“就绪”功能。如果您不想使用任何库,则可以在body-element调用onload-event时始终创建变量。
的jQuery式:
$(function(){
// create X here
})
body onload style:
<body onload="aFunctionThatCreatesYourVariable()">