document.location或window.location.href在if条件的if部分中不起作用,但是对else部分起作用

时间:2017-08-29 09:14:02

标签: javascript url

我使用以下代码验证表单中的密码。如果密码正确 - 将用户移至站点X.如果不正确(尝试3次后),请将用户移至站点Y.

出于某种原因,它仅适用于网站Y.

我的代码:

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <form>
        Enter password to continue: <br>
        <input type="text" id="user"/>
        <input type="button" id="myButton" value="Enter site"/>
        </form>

        <script>
           let tries = 0;
                let error = 0;
            let password = 'tiesto';

            document.querySelector("#myButton").onclick = ()=> {
                let passwordValue = document.querySelector('#user').value;
                if (password === passwordValue) {
                    window.location.href = 'http://maariv.co.il';
                } else {
                    tries++;
                    alert('Try again please.');
                }

                if (tries === 3) { // 3 is the border.
                    error++;
                }

                if (error === 1) {
                    window.location.href = 'http://microsoft.com';
                }
            };
        </script>
    </body>
</html>

我尝试过:

  1. 检查整个代码的语法错误。
  2. ===更改为==(我想,也许是因为它是一个字符串,引号也算在内,当然我错了)。
  3. window.location.href = 'http://maariv.co.il', true;
  4. return false
  5. 下添加window.location.href

    作为一个初学者,我问,为什么这个条件只能用于一半?也就是说,正面部分(比)不起作用,但负面部分(否则)起作用。

    更新

    这只是一个练习。确实。这不是生产。在生产中,我应该存储并从数据库请求密码。

2 个答案:

答案 0 :(得分:1)

将以下行let passwordValue = document.querySelector('#user').value;放入onclick of“mybutton”。

let tries = 0;
let error = 0;
let password = 'tiesto';

document.querySelector("#myButton").onclick = ()=> {

    let passwordInput = document.querySelector('#passwordInput').value;
    if (password === passwordValue) {
        window.location.href = 'http://maariv.co.il';
    } else {
        tries++;
        alert('Try again please.');
    }

    if (tries === 3) { // 3 is the border.
        error++;
    }

    if (error === 1) {
    window.location.href = 'http://microsoft.com';
    }
};
<form>
  Enter password to continue: <br>
  <input type="text" id="user" />
  <input type="button" id="myButton" value="Enter site" />
</form>

答案 1 :(得分:0)

使用return

if (password === passwordValue) {
    return window.location.href = 'http://maariv.co.il';
}

否则,该函数将执行到最后,您将到达第二个重定向,然后覆盖第一个重定向。