此JavaScript登录无效

时间:2014-11-26 20:54:27

标签: javascript

我从这个网站上找到并编辑了这段代码,但是代码不适合我。代码的目标是在一个页面上创建用户名和密码(目前仅限于预制的用户名和密码),并将该信息数组发送到另一个页面,您可以使用其他页面中的用户名和密码登录。代码看起来很好,但我是一个业余爱好者,想知道它有什么问题。谢谢你的回答。

定义用户名和密码的代码是:

<!DOCTYPE html>
<html>
<head>

<title>
create account
</title>


<script>
sessionStorage.setItem("unArray", JSON.stringify("bob", "sam"));
sessionStorage.setItem("pwArray", JSON.stringify("lol", "jk"));
</script>


</head>

<body>

</body>


</html>

从上面的页面获取已创建的用户名和密码并将其用于登录页面的代码如下:

<!DOCTYPE html>
<html>
<head>
<title>
log on page
</title>

<script type = "text/javascript">
var count = 2;

function validate() {
    var un = document.getElementById("username").value;
    var pw = document.getElementById("pword").value
    var valid = false;

    var unArray = JSON.parse(sessionStorage.getItem("unArray"));
    var pwArray = JSON.parse(vsessionStorage.getItem("pwArray"));

    for (var i=0; i <unArray.length; i++) {
        if ((un == unArray[i]) && (pw == pwArray[i])) {
        valid = true;
            break;
        }
    }

    if (valid) {
        alert ("Login was successful");
        window.location = "http://www.google.com";
        return false;
    }

    var t = " tries";

    if (count == 1) {t = " try"}

    if (count >= 1) {
        alert ("Invalid username and/or password. " +
               "You have " + count + t + " left.");
        document.myform.username.value = "";
        document.myform.pword.value = "";
        setTimeout("document.myform.username.focus()", 25);
        setTimeout("document.myform.username.select()", 25);
        count --;
    }

    else {
        alert ("Still incorrect! You have no more tries left!");
        document.myform.username.value = "No more tries allowed!";
        document.myform.pword.value = "";
        document.myform.username.disabled = true;
        document.myform.pword.disabled = true;
        return false;
    }

}
</script>

    <style>

    p.log_on{
    position: fixed;
    top: 30px;
    left: 20px;
}
</style>





</head>


<body>


<form name = "myform">
  <p class="log_on">
    ENTER USER NAME <input type="text" id="username"><br><br><br><br><br>
    ENTER PASSWORD <input type="password" id="pword">
    <input type="button" value="Check In" id="Submit" onclick="validate()">
  </p>
</form>


</body>


</html>

1 个答案:

答案 0 :(得分:2)

以下两行:

sessionStorage.setItem("unArray", JSON.stringify("bob", "sam"));
sessionStorage.setItem("pwArray", JSON.stringify("lol", "jk"));

未正确使用JSON.stringify功能。

他们应该是:

sessionStorage.setItem("unArray", JSON.stringify(["bob", "sam"]));
sessionStorage.setItem("pwArray", JSON.stringify(["lol", "jk"]));

请参阅以下链接以供参考:Mozilla Developer Network

根据文档,JSON.stringify参数定义如下:

  

语法

     

JSON.stringify(value[, replacer [, space]])

     

参数

     

value - 要转换为JSON字符串的值。

     

replacer(可选) - 如果是函数,则转换字符串化时遇到的值和属性;如果是数组,则指定最终字符串中对象中包含的属性集。   JavaScript指南文章Using native JSON。

中提供了replacer功能的详细说明      

space(可选) - 使结果字符串打印得很漂亮。