首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数外部初始化时无法访问变量

在函数外部初始化时无法访问变量
EN

Stack Overflow用户
提问于 2010-02-19 02:47:21
回答 6查看 105.9K关注 0票数 40

当我使用这样的代码时,它工作得很好:

代码语言:javascript
复制
function removeWarning() {
    var systemStatus = document.getElementById("system-status");
    systemStatus.innerHTML = "";
}

function indicateInvalidUsername() {
    var systemStatus = document.getElementById("system-status");
    systemStatus.innerHTML = "Invalid username";
}

但是,当我想要将systemStatus移动到全局变量时,它不起作用:

代码语言:javascript
复制
var systemStatus = document.getElementById("system-status");

function removeWarning() {
    systemStatus.innerHTML = "";
}

function indicateInvalidUsername() {
    systemStatus.innerHTML = "Invalid username";
}

我应该在这里做什么?

EN

回答 6

Stack Overflow用户

发布于 2010-02-19 02:52:54

这实际上取决于您的JavaScript代码所在的位置。

该问题可能是由于在执行以下操作时未加载DOM造成的

代码语言:javascript
复制
var systemStatus = document.getElementById("system-status");

将被执行。您可以尝试在onload事件中调用它,或者理想情况下使用JavaScript框架中的DOM ready类型事件。

票数 38
EN

Stack Overflow用户

发布于 2010-02-19 02:48:47

确保在"root“级别声明变量,而不是在任何代码块之外。

您也可以完全删除var,尽管这是,并且会抛出"strict“警告。

根据,您可以使用window.variablename设置全局变量。

票数 27
EN

Stack Overflow用户

发布于 2010-02-19 02:51:27

我猜测system-status元素是在运行变量声明之后声明的。因此,在声明变量时,它实际上被设置为null?

您应该只声明它,然后从onLoad处理程序中分配它的值,因为这样就可以确保它正确地初始化(加载)了相关的元素。

您也可以尝试将脚本放在页面的底部(或者至少在声明了system-status元素之后的某个位置),但这并不能保证总是有效。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2291252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档