javascript:不能在函数中使用全局变量来导航dom

javascript:不能在函数中使用全局变量来导航dom,javascript,dom,variables,scope,Javascript,Dom,Variables,Scope,这里是初学者。。。 我错过了什么 我定义了一个全局变量,它是对html元素的引用: var x=document.getElementById("xxx1"); 然后,在函数内部尝试引用该变量以导航dom: x.innerHTML="dsfgfdgdf"; …不起作用;如果我在函数中定义变量,它会工作,但我不知道这是一个范围问题。。。如果我不在dom上下文(object.property)中使用全局变量,那么在函数中使用全局变量就可以了 谢谢在加载DOM之前

这里是初学者。。。 我错过了什么

我定义了一个全局变量,它是对html元素的引用:

         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上执行的函数中的变量…修复了…谢谢大家!