2016-11-14 5 views
0

私のコードには本当に奇妙なエラーがあります。基本的には、簡単なユーザー名の保存/呼び出しフォームを作っています。私はユーザーから入力を受け取り、ブラウザのローカルストレージに保存します。その後、私が前からの入力でアクセスしようとすると、私はlocalstorageからそのアイテムを思い出すでしょう。Javascriptの "if"文の奇妙なエラー

if文が機能していないようです。私は項目を個別に比較しようとしました - "document.getElementById( 'userName')"をランダムな文字列と "localStorage.getItem( 'login_info')と比較してみました。しかし、私がしようとするとき

if (localStorage.getItem('login_info') === document.getElementById('userName')) 

コードは決して出力としてtrueを返すことはありません。 アイデア? ありがとう!

<!DOCTYPE html> 

<html> 
    <head> 
     <title>Try</title> 
    </head> 
    <body> 

     <p> Please type in your username and password </p> 

     <form id="register_form"> 
      <input id="name1" type="text" placeholder="Name" value=""/> 
      <input id="rgstr_btn" type="submit" value="Register" onClick="store()"/> 
     </form> 

     <form name="login"> 
      <input id="userName" type="text" placeholder="Enter Username" value=""/> 
      <input id="login_btn" type="submit" value="Login" onClick="check()"/> 
      <input type="reset" value="Cancel"/> 
     </form> 

     <script type="text/javascript"> 

      var user_name = document.getElementById('name1'); 

      function store(){ 
       localStorage.setItem('login_info', user_name.value) 
      } 

      function check(){ 

       var storedName = localStorage.getItem('login_info'); 

       // entered data from the login form 
       var user_Name = document.getElementById('userName'); 

       if (document.getElementById('userName') === localStorage.getItem('login_info')){ 
        alert("Login Successful! Continuing to .."); 
        window.open("Us.html"); 
       } 
       else{ 
        alert("Login unsuccessful, please try again!"); 
       } 
      } 
     </script> 

     <noscript> Please try a different browser! </noscript> 

    </body> 
</html> 
+1

オブジェクトを比較しているためです。 [ここ](http://stackoverflow.com/q/201183/5647260)を参照してください。 – Li357

+0

オブジェクトとオブジェクトを比較することはJavaScriptではうまくいきません –

+0

ああ、私はこの部分に気づいたことはありませんでした。私はまだjavascriptの初心者です...このシナリオでは、どうやって2つの文字列を比較できますか? – SAValkyrie

答えて

1

入力テキストから値を取得するには、document.getElementById( 'userName')。valueを使用します。

 var user_name = document.getElementById('name1'); 

     function store(){ 
      localStorage.setItem('login_info', user_name.value) 
     } 

     function check(){ 

      var storedName = localStorage.getItem('login_info'); 

      // entered data from the login form 
      var user_Name = document.getElementById('userName').value; 

      if (document.getElementById('userName').value == localStorage.getItem('login_info')){ 
       alert("Login Successful! Continuing to .."); 
       window.open("Us.html"); 
      } 
      else{ 
       alert("Login unsuccessful, please try again!"); 
      } 
     } 
0

@DhavalSoniのように、比較するにはelement.valueを使用する必要があります。 document.getElementByIdは、その値ではなくDOMオブジェクトを返すためのものです。 console.log(Document.getElementById( 'username'))を試して、Chromeデバッガで返されたオブジェクトを調べてください。