Javascript变量似乎没有进入DOM

时间:2011-09-06 09:04:38

标签: 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警报阅读?

4 个答案:

答案 0 :(得分:3)

您的变量声明:

var year = "2011";

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

如果你想让它全局可见,以便其他函数可以访问它,那么你必须将它声明为一个全局变量,你可以在任何函数之外的范围顶层声明它:

var year;

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

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

在函数中声明的变量,根据定义,是一个局部变量,只能在该函数中使用。

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

希望这不会让您感到困惑,但为了完整答案,全局Javascript变量和DOM可能看起来连接的地方是,在Web浏览器中,全局变量也可用于“窗口“对象。因此,在上面的代码示例中,您可以访问year:

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

或作为:

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

如果year是全局变量,则两者都会在Web浏览器中显示相同的结果。

答案 1 :(得分:2)

var year = "2011";

表示年份范围是

中声明的函数的本地范围

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

答案 2 :(得分:2)

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

var year;

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

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

答案 3 :(得分:1)

Year的范围限定为函数setParams,并且不能在该函数之外访问。

您可以将功能更改为

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

可以全局访问年变量

不一定是最佳做法

看看Douglas Crockford的模块模式,找出管理全局变量和函数的有用方法:

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