<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/