2017-04-20 118 views
0

我是JavaScript新手。有人可以告訴我我做錯了什麼嗎?我爲HTML表單創建了一條錯誤消息。名稱字段有效,但如果其他字段留空,我想創建單個消息。創建多個JavaScript變量?

下面是我的JavaScript代碼:

function validateForm() { 
    var name = document.forms["contactform"]["name"].value; 
    if (name == "") 
    var email = document.forms["contactform"]["email"].value; 
    if (name == "") { 
    document.getElementById('error').innerHTML = "Please enter your name"; 
    return false; 
    document.getElementById('erroremail').innerHTML = "Please enter your email"; 
    return false; 
    } 
} 
+1

你爲什麼要檢查'name'兩次? ('if(name ==「」)')爲什麼在你改變'#erroremail'的內容之前返回*? –

+1

你的問題真的是什麼? – mfirry

+0

您返回了兩次,最後兩條指令永遠不可訪問。 – Karim

回答

0
  1. 句法: 此代碼是沒有達到:document.getElementById('erroremail').innerHTML = "Please enter your email";

第一返回之前把它和刪除第二個回報。

if (name == "") { 
document.getElementById('error').innerHTML = "Please enter your name"; 
document.getElementById('erroremail').innerHTML = "Please enter your email"; 
return false; 
} 
  • 按道理:
  • 你爲什麼要考兩次同樣的事情?

    解決方案:

    測試空電子郵件=>做點什麼

    試驗空的名字=>做點什麼

    0

    在你的代碼的問題是,你以前return一些檢查另一個驗證。當你返回一些東西時,函數停止,返回後沒有任何東西被驗證。

    在你的情況下,你可以聲明一個默認爲var ret=true;的變量,如果一個條件不符合你的要求,它就會變成錯誤的。

    例如:

    function test() { 
    var ret = true; 
    if(1 !== 1) { 
        ret = false; //you will return false in the end 
    } 
    return ret; //return the result. from this point on, the function exits and doesn't do anything after 
    alert("This will not be executed because there is a 'return' before"); 
    } 
    

    上述函數將返回false,也不會執行該警報,因爲你已經從該函數返回一個結果

    你需要的是:

    function validateForm() { 
         var ret = true; 
         var name = document.forms["contactform"]["name"].value; 
         if (name == "") { 
         document.getElementById('error').innerHTML = "Please enter your name"; 
         ret = false; 
         } 
         var email = document.forms["contactform"]["email"].value; 
         if (email== "") { 
         document.getElementById('erroremail').innerHTML = "Please enter your email"; 
         ret = false; 
         } 
         return ret; 
        } 
    
    +2

    無解釋地發佈代碼是不好的。另外,這段代碼將停止它發現的第一個錯誤。 –

    +0

    此代碼實際工作。你能解釋一下'var ret = true'嗎?'是用來? –

    +0

    如果您在名稱爲空時返回false,則不會再驗證電子郵件。通過這種方式,名稱和電子郵件都得到了驗證,並且您將收到兩個錯最後,你返回真或假。 –