Как исправить проблему логики в моем цикле для моего основного экрана входа - PullRequest
0 голосов
/ 12 февраля 2019

Я получаю код, который сообщает мне, когда кто-то вводит неверный идентификатор пользователя или пароль.И я могу заставить его войти, когда они наберут первый идентификатор пользователя и пароль

user1 и pass1

Но если они попробуют 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>

Мне нужно, чтобы он принимал и другие части массива.Когда кто-то вводит usee2 и pass2 например

Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

У вас возникли проблемы здесь else if (i = useArray.length - 1) useArray.length будет 3 для всех циклов, поэтому userArray.length - 1 всегда будет равно 2, вы устанавливаете i = 2 внутри if в JSоператор присваивания также возвращает назначенное значение, поэтому вы в основном пишете else if( 2 ), что всегда будет иметь значение true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...