Javascript变量似乎没有进入DOM

标签 javascript dom

<head>
<script>
function setParams() {
    var year = "2011";
}

function showYear() {
    alert("The year is " + year);
}
</script>
</head>
<body>
<input type="submit" onclick="setParams();" value="Set" />
<input type="submit" onclick="showYear();" value="Year" />
</body>

那么为什么年份不进入dom以供alert读取呢?

最佳答案

你的变量声明:

var year = "2011";

是一个局部变量,仅在您声明它的函数内可见。

如果您希望它全局可见,以便其他函数可以访问它,那么您必须将其声明为全局变量,并在任何函数之外的顶级作用域中声明它:

var year;

function setParams() {
    year = "2011";
}

function showYear() {
    alert("The year is " + year);
}

根据定义,在函数内声明的变量是局部变量,并且仅在该函数内可用。

那么,最后你可能不太明白 DOM 是什么。 DOM 标准为“文档对象模型”,该术语用于表示网页中的对象。你在这里问的是 javascript 全局变量语法,它与 DOM 是分开的。

希望这不会让您感到困惑,但为了答案的完整性,全局 Javascript 变量和 DOM 可能看起来有联系的一个地方是,在网络浏览器中,全局变量也可以在“窗口”对象。因此,在上面的代码示例中,您可以通过以下方式访问年份:

function showYear() {
    alert("The year is " + year);
}

或如:

function showYear() {
    alert("The year is " + window.year);
}

如果 year 是全局变量,则两者在网络浏览器中给出相同的结果。

关于Javascript变量似乎没有进入DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317412/

相关文章:

javascript - 图像而不是单选按钮/文本?

javascript - 获取 img 的宽度和高度,并使用 javascript 将其添加到最近的父级

javascript - 在 DOM 元素中使用变量

javascript - 将显示为 position absolute out moblte 的表单放入移动设备的模态 Bootstrap 按钮

javascript - 将 id 从一个 View 发送到另一个 View (AngularJS、NodeJs、HTML)

javascript - 如何使 ES6 Module 导出的函数在 dom 中可用?

javascript - innerhtml 字符串到多个元素

javascript - 如何通过 jQuery UI 使整个 DOM 可拖动和可调整大小?

javascript - 在 Firefox 中检测可滚动 div 何时为 "focused"?

javascript - angular.js 从函数内部获取 var