2017-12-11 14 views
-3

if文としてjavascriptコードにテスト書式を追加すると、何分の1秒間エラーが発生してから消えることが示されます。テストフォーマットを削除しても、エラーは正常に表示されます。どうしてこれなの?JavaScriptのテスト書式if文のエラー

<!DOCTYPE html> 
<head> 
    <title>Settings</title> 

    <style> 
     .entry, textarea { 
     float: right; 
     width: 500px; 
     resize: none; 
     padding: 1px; 
     margin-right: 200px; 
    } 
    </style> 
    </head> 
    <body> 
    <div id="content"> 
    <h1 style="margin-top: 0px">Settings</h1> 
    <form onSubmit="return checkForm(this)"> 
     <label for="username" class="label"> Change Username:</label> 
     <input type="text" id="username" class="entry"/></br> 
     <p class=error id="usernameError"><?php echo $error;?></p> 
     <br/> 

     <label for="email" class="label"> Change E-mail:</label> 
     <input type="email" id="email" class="entry"/> <br/> 
     <p class=error id="firstnameError"></p> 
     <br/> 

     <label for="password" class="label">Change Password:</label> 
     <input type="password" id="password" class="entry"/> <br/> 
     <p class=error id="passwordError"></p> 
     <br/> 

     <label for="confirmPassword" class="label">Confirm Password:</label> 
     <input type="password" id="confirmpassword" class = "entry"/> 
     <br/> 
     <p class=error id="confirmpasswordError"></p> 
     <br/> 

     <label for="address" class="label">Change Address:</label> 
     <textarea id = "address" rows="3" class="entry"></textarea><br/><br/><br/><br/> 

     <label for="mobile" class="label">Change Mobile Number:</label> 
     <input type="tel" id="mobile" class="entry"/> <br/><br/><br/> 
     <br/> 

     <input type="submit" id="confirm" name="confirm" value="Confirm Changes" style= "font-size: 15px; background: #f5f5f5; 
     width: 20%; margin-right: 20%" class="entry" /> 
    </form> 
    </div> 
<script type="text/javascript" > 
function checkForm(form){ 
     var username = document.getElementById("username").value; 
     var mailformat = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
     var usernameformat = /^[\w ]+$/; 
     var password = document.getElementById("password").value; 
     var confirmpassword = document.getElementById("confirmpassword").value; 
     var ok = true; 

     if (!usernameformat.test(username)) 
     { 
      document.getElementById("usernameError").innerHTML = "No symbols please!"; 
      ok = false; 
     } 

     if (password!=confirmpassword) 
     { 
      document.getElementById("passwordError").innerHTML = "Passwords do not match"; 
      document.getElementById("confirmpasswordError").innerHTML = "Passwords do not match"; 
      ok = false; 
     } 
     if (!mailformat.test(email)) { 
      document.getElementById("emailError").innerHTML = "Input a valid email"; 
       ok = false; 
       } 

    return ok; 

} 

</script> 
</body> 
</html> 
+2

をお使いのエラーコンソールを読む: 'キャッチされない例外TypeErrorを:null'なので – epascarello

+0

のプロパティ「innerHTMLプロパティ」を設定することはできません私はそれが悪い形であることを知っています。しかし、質問のために、最終的にスクリプトタグの間のHTMLファイルに埋め込まれています。 –

+0

電子メールのエラーフィールドは 'emailError'ではなく' firstnameError'と呼ばれます。 JSエラーコンソールに注意を払い、常に仮定をチェックしてください。たとえば、 'document.getElementById(" emailError ")'をコンソールに入力して、そのような要素が存在しないことを確認してください。 –

答えて

-1

Notice <p class=error id="firstnameError"></p>

<label for="email" class="label"> Change E-mail:</label> 
    <input type="email" id="email" class="entry"/> <br/> 
    <p class=error id="firstnameError"></p> 
    <br/> 

それは次のようになります。emailError

<label for="email" class="label"> Change E-mail:</label> 
<input type="email" id="email" class="entry"/> <br/> 
<p class=error id="emailError"></p> 
<br/> 

document.getElementById("emailError")は未定義であるので、あなたがHTMLを設定しようとすると、それが失敗します。

emailもどこにも定義されていません。あなたは電子メールに対してテストしたい場合は、適切に設定変数があることを確認してください:

var email = document.getElementById("email").value; 
+2

気をつけて2 downvotesを説明する! – FrankerZ

+0

私はそうではありませんでしたが、人々はタイプミスの回答にdownvote傾向があります。タイプミスは通常、近い投票です。この場合、それは単にタイプミスではありませんが、基本的なミスです。 – epascarello

+0

それは完璧でした。私はそれを捕まえなかったとは信じられません。私は次回もJSエラーコンソールを使用します(それが存在するかどうかは分かりませんでした)。申し訳ありませんが、ありがとう –