javascript:不能在函数中使用全局变量来导航dom
这里是初学者。。。 我错过了什么 我定义了一个全局变量,它是对html元素的引用:javascript:不能在函数中使用全局变量来导航dom,javascript,dom,variables,scope,Javascript,Dom,Variables,Scope,这里是初学者。。。 我错过了什么 我定义了一个全局变量,它是对html元素的引用: var x=document.getElementById("xxx1"); 然后,在函数内部尝试引用该变量以导航dom: x.innerHTML="dsfgfdgdf"; …不起作用;如果我在函数中定义变量,它会工作,但我不知道这是一个范围问题。。。如果我不在dom上下文(object.property)中使用全局变量,那么在函数中使用全局变量就可以了 谢谢在加载DOM之前
var x=document.getElementById("xxx1");
然后,在函数内部尝试引用该变量以导航dom:
x.innerHTML="dsfgfdgdf";
…不起作用;如果我在函数中定义变量,它会工作,但我不知道这是一个范围问题。。。如果我不在dom上下文(object.property)中使用全局变量,那么在函数中使用全局变量就可以了
谢谢在加载DOM之前是否执行getElementById?(您应该等待domready或onload)
是否可能覆盖其他函数中的值?是否在加载DOM之前执行getElementById?(您应该等待domready或onload)
是否可能覆盖其他函数中的值?这不是范围问题 最可能的原因是创建变量时元素还不存在。必须将创建变量的script元素放在要访问的元素之后,因为代码将在加载页面时运行 另一种方法是全局声明变量,并从页面加载后运行的onload事件中进行设置:
<script>
var x;
function init() {
x = document.getElementById('xxx1');
}
</script>
<body onload="init();">
var x;
函数init(){
x=document.getElementById('xxx1');
}
这不是范围问题
最可能的原因是创建变量时元素还不存在。必须将创建变量的script元素放在要访问的元素之后,因为代码将在加载页面时运行
另一种方法是全局声明变量,并从页面加载后运行的onload事件中进行设置:
<script>
var x;
function init() {
x = document.getElementById('xxx1');
}
</script>
<body onload="init();">
var x;
函数init(){
x=document.getElementById('xxx1');
}
我认为问题可能在于,如果全局声明该变量,则在计算该行时,DOM未完全加载,因此无法访问该元素
在函数中声明变量时,只有在调用该函数时才会创建该变量,此时DOM很可能已经完全加载。我认为问题可能在于,如果全局声明该变量,则在计算该行时,DOM没有完全加载,因此无法访问该元素
在函数中声明变量时,只有在调用该函数时才会创建该变量,此时DOM很可能已经完全加载。调用getElementById时,页面可能没有完全加载 确保在页面完成加载后创建全局变量x。大多数库都有处理这个问题的方法,例如jQuery有“ready”函数。如果不想使用任何库,则始终可以在body元素调用onload事件时创建变量 jQuery风格:
$(function(){
// create X here
})
车身加载样式:
<body onload="aFunctionThatCreatesYourVariable()">
调用getElementById时,页面可能未完全加载 确保在页面完成加载后创建全局变量x。大多数库都有处理这个问题的方法,例如jQuery有“ready”函数。如果不想使用任何库,则始终可以在body元素调用onload事件时创建变量 jQuery风格:
$(function(){
// create X here
})
车身加载样式:
<body onload="aFunctionThatCreatesYourVariable()">
在onload上执行的函数中声明了变量。。。thanks@bogdan:没问题,这是初学者经常犯的错误。在onload上执行的函数中声明变量。。。thanks@bogdan:没问题,这是初学者经常犯的错误。在onload上执行的函数中声明了变量…修复了…谢谢大家!声明了在onload上执行的函数中的变量…修复了…谢谢大家!