首页 > 解决方案 > 如何为我的基本登录屏幕解决循环中的逻辑问题

问题描述

当有人输入错误的用户名或密码时,我会收到代码告诉我。我可以让它在人们输入第一个用户名和密码时让他们进入

user1pass1

但是,如果他们尝试user2并且pass2它说这是一个错误的密码。我知道这是我对循环的逻辑错误,但是,我一辈子都想不通!可以的话请帮我理解!

谢谢

<!DOCTYPE html>

<html lang="en">
<head>
<title>Assignment 1</title>
<link rel="stylesheet" type="text/css" href="css/login.css">
</head>

<body>
<script>
    document.body.style.backgroundColor = "grey";
    var valid = false;

    function validate() {
        var useArray = ["user1", "user2", "user3"];
        var passArray = ["pass1", "pass2", "pass3"];

        var x = document.login.userId.value;
        var y = document.login.passWord.value;

        for(var i = 0; i < useArray.length; i++) {
            if (x == useArray[i] && y == passArray[i]) {
                document.write("You have successfully logged on to your 
class!");
                return false;
            } else if (i = useArray.length - 1) {
                document.write("Error: User Id is not valid, please click the 
    link below again \n \n");
                var l =(" link back");
                var back = l.link("practice.html");
                document.write(back);
                return false;
            }
        }
    }
</script>
<div class="container">
    <h1>Logon</h1>
    <form name="login">
        <label for="useId">Userid: </label>    
        <input type="text" name="userId" required>
        <br><br>
        <label for="passWord">Password: </label>
        <input type="password" name="passWord" required>
        <br><br>
        <input type="button" class="submit" value="Log In" name="submit" 
  onclick="validate(this.form)">
  </form>
  </div>
  <br><br>

</body>
</html>

我也需要它来接受 Array 的其他部分。例如,当有人放入usee2pass2

谢谢

标签: javascripthtmlajaxlogic

解决方案


你在这里遇到的麻烦else if (i = useArray.length - 1) useArray.length对于所有循环都是 3 所以userArray.length - 1总是 eval to 2,你i = 2if JS 中设置赋值运算符也返回分配的值,所以你基本上在写 else if( 2 )它总是会计算为true


推荐阅读