2013-07-29 97 views
-2

我正在使用HTML和JavaScript的網站上工作。當我運行我的代碼時,它會運行,但是,如果不管輸入什麼內容,我的if else語句都不會再遇到else情況。有人能告訴我什麼是錯誤的。我是新的Forms和javaScript,但我認爲JavaScript的大部分內容都與Java相同。無論如何,下面的代碼。任何人都可以幫助我調試我的錯誤

<form id="eForm">   
    <script> 

    function CheckForm() 
    { 
    var first=document.getElementsByTagName("input")[0].value; 
    var mid=document.getElementsByTagName("input")[1].value; 
    var last=document.getElementsByTagName("input")[2].value; 
    var email=document.getElementsByTagName("input")[3].value; 
    var date=document.getElementsByTagName("input")[4].value; 
    var time=document.getElementsByTagName("input")[5].value; 


    if((document.getElementsByTagName("input")[0].value !=="first" || document.getElementsByTagName("input")[0].value !=="") && 

    (document.getElementsByTagName("input")[1].value !=="Initial" || document.getElementsByTagName("input")[1].value !=="") && 

    (document.getElementsByTagName("input")[2].value !=="last" || document.getElementsByTagName("input")[2].value !=="") && 

    (document.getElementsByTagName("input")[3].value !=="[email protected]" || document.getElementsByTagName("input")[3].value !=="") && 

    (document.getElementsByTagName("input")[4].value !=="xx/xx/xxxx" || document.getElementsByTagName("input")[4].value !=="") && 

    (document.getElementsByTagName("input")[5].value !=="xx:xx" || document.getElementsByTagName("input")[5].value !=="")) 
    { 
    document.getElementsByTagName("input")[0].value='fail'; 
    } 
    else 
    { 
    alert("One or more fields were not filled in correctly. /n Please try again."); 
    document.getElementsByTagName("input")[0].value='works'; 
    } 

    first.value='works'; 
    } 
    </script> 

    First name: <input type="text" name="FirstName" id="FirstName" value="first"><br> 
    Middle Initial: <input type="text" name="MidName" id="MidName" value="Initial"><br> 
    Last name: <input type="text" name="LastName" id="LastName" value="last"><br> 
    E-Mail: <input type="text" name="Email" id="Email" value="[email protected]"><br> 
    Date for request: <input type="date" name="Date" id="Date" value="xx/xx/xxxx"><br> 
    Time for request: <input type="time" name="Time" id="Time" value="xx:xx"> 
    AM<input type="radio" name="AM/PM" id="AM" checked="true"> 
    PM<input type="radio" name="AM/PM" id="PM" checked="false"><br> 

    <input onclick="CheckForm()" type="button" value="Submit"> 
    <input onclick="CheckForm()" type="submit" value="Submit"> 

    On Submit, if a feild is left not filled out, then do not go through and show a message saying that "One or more feilds are not filled out. You must fill them 

    out in order to submit this form." 

    </form> 

在事後(20/20仍然)我應該已經意識到,表達送花兒給人真正做我或語句,謝謝V2B指出了這一點。

+3

的JavaScript!= Java的 –

+0

有你使用你選擇的瀏覽器的開發者工具(F12)試過嗎?通常它會給你錯誤信息並破壞有害的代碼行。 – CuddleBunny

+0

請注意,我花了幾個小時試圖自己調試和研究,我不是試圖通過向別人請求知識來快捷方式,如果我自己找到答案,我會發布信息,以防其他人最終遇到同樣的問題。礦。 – Dylan

回答

3

(document.getElementsByTagName( 「輸入」)[0]。價值!== 「第一」 || document.getElementsByTagName( 「輸入」)[0]。價值!== 「」)

將始終評估爲真..請記住它是一個或,即使一個是真的這是一個真正的..如果值是「第一」,那麼它將是(false || true)
,如果它是「xyz ‘那麼這將是(真||假)「,那麼如果是這將是(真||真),

並且類似地,其他5行太..

編輯:
以下將做你想做的事情。另外,不要多次重複document.getElementsByTagName。 Dom訪問它昂貴。就你而言,沒有必要一遍又一遍地重複它。你可以做到這一點如下,

var inputElement = document.getElementsByTagName("input"); 

if((inputElement[0].value !=="first" && inputElement[0].value !=="") && 
    (inputElement[1].value !=="Initial" && inputElement[1].value !=="") && 
    (inputElement[2].value !=="last" && inputElement[2].value !=="") && 
    (inputElement[3].value !=="[email protected]" && inputElement[3].value !=="") && 
    (inputElement[4].value !=="xx/xx/xxxx" && inputElement[4].value !=="") && 
    (inputElement[5].value !=="xx:xx" && inputElement[5].value !=="")) 
{ 
    inputElement[0].value='fail'; 
} 
else 
{ 
    alert("One or more fields were not filled in correctly. /n Please try again."); 
    inputElement[0].value='works'; 
} 
+0

* FacePalm *好,我覺得很蠢。我知道這是愚蠢的。謝謝。另外,感謝Dom訪問的信息。 – Dylan

3

我不是(真的沒有人會爲你調試你的代碼)。但這裏有幾點讓你去:

  • 你的腳本運行之前投入甚至加載。將<script>元素放置在頁面的底部,正好在關閉</body>的下方。

  • 您輸入有名稱,使用它們:

    var form = document.forms[0]; //Or getElementByID, whatever 
    console.log(form["FirstName"]); //The first name input. 
    
  • 你的條件實在是太長了。分別檢查項目並每次返回適當的錯誤。你也會爲你的用戶提供一個幫助!

  • 您沒有使用<label> s來標記您的輸入標籤。去做。

  • 使用<input placeholder="placeholder">有佔位符文本。 (而不只是給出一個初始值)。此外,由於您有標籤,佔位符文本是多餘的。

+1

既不正確也不相關。 – Alohci

+0

@Alohci:這些不正確?這些不相關?第一點就是現場。腳本在輸入存在之前就會運行。其餘是可選的,但仍然很重要。 –

+0

兩個例子。腳本運行得很早,但只創建一個函數。該功能在單擊按鈕時運行。佔位符和標籤不是多餘的。 [HTML5規範](http://www.w3.org/html/wg/drafts/html/master/forms.html#the-placeholder-attribute)特別指出:「placeholder屬性不應該被用作替換爲一個標籤。「 – Alohci

相關問題