2011-12-16 142 views
1

我有一個javascript全局變量的一個問題,假設我有以下JavaScript的全局變量未定義

var globalVar; 

我有一個文本字段

<input type="text" id="myInput" onkeydown="checkKey(this)" onkeypress="checkKey(this)"/> 

而且在功能checkkey,我給你一些它的價值:

globalVar=document.forms[0].elements("myInput").value; 

我檢查了全局變量的值已經改變了警報。 當我嘗試在另一個函數中使用globalVar時,我發現它的值爲undefined。其他功能有類似:

param += globalVar; 

回答

6

form實例的elements屬性不是一個功能,它是一個對象。使用

globalVar=document.forms[0].elements.myInput.value; 

...或

globalVar=document.forms[0].elements["myInput"].value; 

...但更好的是,與你打電話checkKey的方式,只需要聲明一個參數叫做input或任何與使用

globalVar=input.value; 

...因爲您將this轉換爲checkKey

如果您打算按名稱訪問表單字段,請使用name屬性而不是id屬性(儘管id也可以在許多瀏覽器上運行)。

如果您的var globalVar;位於全局作用域(所有函數之外),那麼它是一個全局變量。如果var語句位於一個函數中,則它是一個局部變量。您沒有給我們足夠的上下文來知道var是哪裏,但是如果它在全球範圍內,並且您成功設置了它的值,並且稍後檢查它,則會設置

Live demo using the long form | Live demo using the argument

+0

我說這是一個全局變量,所以它是在全球分數(所有功能之外)... – Mansuro 2011-12-16 09:25:36