繁体   English   中英

Javascript变量似乎没有进入DOM

[英]Javascript variable doesn't seem to enter the 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来读取警报呢?

您的变量声明:

var year = "2011";

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

如果要使其全局可见,以便其他函数可以访问它,则必须将其声明为全局变量,并在所有函数之外的作用域的顶层声明它:

var year;

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

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

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

然后,最后您可能不太了解DOM是什么。 用于“文档对象模型”的DOM标准和该术语用于表示网页中的对象。 您在这里要问的是与DOM分开的javascript全局变量语法。

希望这不会使您感到困惑,但是为了完整起见,全局Javascript变量和DOM似乎联系在一起的一个地方是,在Web浏览器中,“ window”对象上也可以使用全局变量。 因此,在上面的代码示例中,您将year设置为:

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

或为:

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

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

var year = "2011";

表示年份范围对于在其中声明的功能是局部的

在函数外声明它。 或删除var关键字,这也使其成为全局关键字。

您的year-var将需要一个全局范围,因此您可以在其他函数中访问它,即您可以在函数之外定义它。 像:

var year;

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

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

Year的范围是setParams函数,在该函数之外无法访问。

您可以将功能更改为

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

这将使全球可以访问年份变量

虽然不一定是最佳做法

看一下Douglas Crockford的模块模式,它是管理全局变量和函数的有用方法:

http://yuiblog.com/blog/2007/06/12/module-pattern

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM