2016-11-14 107 views
0

我在我的代码中有一个非常奇怪的错误,我只是无法弄清楚。基本上,我正在制作一个简单的用户名保存/撤回表单。我接受用户的输入并将其保存到浏览器的本地存储中。之后,当我尝试访问来自以前的输入时,我会从本地存储回忆该项目。奇怪的错误在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的初学者...在这种情况下,那么,你怎么能比较这两个字符串? – 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调试器中返回的对象。