簡體   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