【问题标题】:Page reloads before reaching else statement in javascript页面在到达 javascript 中的 else 语句之前重新加载
【发布时间】:2018-12-13 23:38:58
【问题描述】:

下面代码中的问题在于 if...else 语句。如果用户尝试使用已存在于 localStorage 中的用户名或电子邮件创建帐户,则程序会显示错误消息。这可以正常工作,但是如果 if 语句为 false,则页面会在到达 else 语句之前重新加载。我已经使用 console.log 来检查 else 语句是否运行,但是如上所述,页面在到达 else 语句之前会重新加载。我也尝试将 event.preventDefault 放在 if 语句中,但这也不起作用。任何帮助将不胜感激。提前致谢。

编辑:当按下按钮时,在 html 中使用 onclick 调用该函数。

 function storeRegistrationInfo(){
            let person = {};
            person.fullname = document.getElementById("regFullName").value;
            person.username = document.getElementById("regUserName").value;
            let username = document.getElementById("regUserName").value;
            person.email = document.getElementById("regEmail").value;
            person.password = document.getElementById("regPassword").value;
            person.repeatedPassword = document.getElementById("repeatPassword").value;

            let per = JSON.parse(localStorage.getItem(username));

            if (person.username === per.username || person.email === per.email){
                document.getElementById("signUpStatus").innerText = "Username or Email already taken!";
            }else {
                localStorage[person.username] = JSON.stringify(person);
            }
            event.preventDefault();
        }

【问题讨论】:

  • 对不起,当注册按钮被按下时,使用onclick函数调用该方法。

标签: javascript html if-statement local-storage reload


【解决方案1】:

Andre,您没有收到事件对象。

假设您是作为 onClick() 的一部分触发的? 尝试添加:

function storeRegistrationInfo(event)

【讨论】:

  • 不幸的是,这不起作用....事件是窗口的一个属性,但是它可以在没有事件参数的其他方法中工作
【解决方案2】:

可能需要补充:

if( !(person === undefined)  &&(person.username === per.username || person.email === per.email))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多