首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码检查无法读取null的属性'parentNode‘

密码检查无法读取null的属性'parentNode‘
EN

Stack Overflow用户
提问于 2017-11-07 10:30:29
回答 1查看 201关注 0票数 0

因此,如果两个给定的密码不匹配,我尝试使用Javascript将一个div插入到另一个div中。然而,每次我尝试运行它时,它都会在这篇文章的标题中抛出错误。如果两个密码匹配,我只想让div消失。

代码语言:javascript
复制
function passwordMismatchError(){
    var pwrd1 = document.getElementById('password').value;
    var pwrd2 = document.getElementById('password-confirmation').value;
    if(pwrd1 != pwrd2){
        // If there is an error box already
        if(document.getElementById("password-mismatch-error")){
            return;
        }
        // If there isn't an error box
        else{
            errcount++;
            var innerdiv = document.createElement('div');
            innerdiv.setAttribute("id", "password-mismatch-error");
            innerdiv.innerHTML = "<p>ERROR: Passwords don't match.</p>";
            (document.getElementById("error-display")).appendChild(innerdiv);
        }
    }
    else{
        // If the passwords match
        errcount--;
        var innerdiv = document.getElementById("password-mismatch-error");
        console.log(innerdiv);
        innerdiv.parentNode.removeChild(innerdiv);
        return;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-11-07 10:37:30

在外部else语句中,#password-mismatch-error从未添加到DOM中,因此innerdiv将是未定义的。因此你不能访问它的parentNode

要解决此问题,只需在尝试使用if(document.getElementById("password-mismatch-error"))移除其父元素之前检查该元素是否存在

代码语言:javascript
复制
function passwordMismatchError(){
    var pwrd1 = document.getElementById('password').value;
    var pwrd2 = document.getElementById('password-confirmation').value;
    if(pwrd1 != pwrd2){
        // If there is an error box already
        if(document.getElementById("password-mismatch-error")) {
            return;
        }
        // If there isn't an error box
        else{
            errcount++;
            var innerdiv = document.createElement('div');
            innerdiv.setAttribute("id", "password-mismatch-error");
            innerdiv.innerHTML = "<p>ERROR: Passwords don't match.</p>";
            (document.getElementById("error-display")).appendChild(innerdiv);
        }
    }
    else{
        // If the passwords match
        errcount--;
        // Ensure the error message actually exists in the DOM
        if(document.getElementById("password-mismatch-error")) {
            var innerdiv = document.getElementById("password-mismatch-error");
            console.log(innerdiv);
            innerdiv.parentNode.removeChild(innerdiv);
        }
        return;
    }
}

希望这能有所帮助!:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47149058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档