2013-08-30 62 views
2

我在我的網站上有一個聯繫人字段,並測試插入的值是否好。這部分工作正常。如果一個值是正確的,就會有一個var值爲true的變量。var = true不會傳遞給另一個函數

我還調用第二個函數,它測試所有的聯繫人字段是否都是true。如果是這樣,發送按鈕將被禁用,否則它將被禁用。可悲的是,我的控制檯中出現錯誤信息:Uncaught ReferenceError:nameIsGoed未定義。 希望你能幫助我! :)

一樹的函數,它們悄悄地同

function checkEmptyMessage(field) { 
if (field.value != '') { 
    document.getElementById("message").style.borderColor="#91bc1e"; 
    var messageIsGoed = true; 
} 
else if (field.value == ''){ 
    document.getElementById("message").style.borderColor="#f15a24"; 
    var messageIsGoed = false; 
}} 

,檢查值是否是真還是假,如果是這樣的功能:禁止獲取的假。

function checkDisable(){ 
    if ((nameIsGoed == true) && (messageIsGoed == true) && (mailIsGoed == true)){ 
     document.getElementById("submit").disabled=false; 
     alert("mooizo"); 
    } 
    else{ 
     alert("er missen nog gegevens"); 
    } 

} 
+1

您想了解一個函數中'var'關鍵字的含義...... – CBroe

+1

您應該閱讀關於範圍。 [var-JavaScript-MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) – Itay

回答

9

你有一個範圍問題,var messageIsGoed;應(聲明)的功能之外,所以你給它的價值是提供給其他功能。

var messageIsGoed; // outside the function 

function checkEmptyMessage(field) { 
if (field.value != '') { 
    document.getElementById("message").style.borderColor="#91bc1e"; 
    messageIsGoed = true; 
} 
else if (field.value == ''){ 
    document.getElementById("message").style.borderColor="#f15a24"; 
    messageIsGoed = false; 
}} 

我加入(聲明)var messageIsGoed;功能外,並刪除var裏面的功能,所以你不要再聲明它(這實際上使一個新的變量僅可在該函數內部)。

更多在這裏閱讀有關聲明變量:MDN:var

+0

修復了這個問題,謝謝你的回覆!暑假過後,我忘記了示波器;) – Menno

+0

@Menno,不客氣。尼斯有時會讓不同的人在尋找代碼。 – Sergio

1

這是一個本地變量。
它只存在於其聲明的函數中。

您想要創建一個全局變量,它將存在於任何地方。
在函數外部聲明該變量。

+4

也許你可以與他分享如何做到這一點 – sircapsalot

2

如果您使用var聲明它,則不能在函數外部使用messageIsGoed。 只需在兩個函數之外聲明它,並在沒有var的情況下使用它,因此它將是全局的。