无法设置 属性 'innerHTML' 的 null Javascript 验证

Cannot set property 'innerHTML' of null Javascript validation

我在控制台报错Cannot set 属性 'innerHTML'of null,如何解决document.getElementById后的文字不会闪退1秒。 我现在添加了 HTML 代码,但是当我想要 post 按钮时,我只想在填写所有内容和未填写时提交表单。我想显示错误消息。

function validateForm()
    {
        var error = 0;
        if(!voornaam('voornaam'))
        {
            document.getElementById('VoornaamError').innerHTML = "vul het veld naam in";
            error++;
        }
        if(!email(document.getElementById('Email').value))
        {
            error++;
            document.getElementById('EmailError').innerHTML = "vul het veld email in";
        }
        if(error > 0){
            return false;
        }
    }

<form method="post" onsubmit="return validateForm()">
                            <label>Voornaam*</label>
                            <input type="text" name="Username" id="Username" placeholder="voornaam" onblur="voornaam(this)" maxlength="40">
                            <div id="VoornaamError" style="color: red;"></div>

                            <label>tussen voegsel</label>
                            <input type="text" name="Username" id="Username" placeholder="tussen vgsl">
                            <br>

                            <label>Achternaam*</label>
                            <input type="text" id="Achternaam" placeholder="achternaam" onblur="achternaam(this)" maxlength="40">
                            <div id="AchternaamError" style="color: red;"></div>

                            <label>Adres*</label>
                            <input type="text" id="Adres" placeholder="adres" onblur="adres(this)" maxlength="40">
                            <div id="AdresError" style="color: red;"></div>

                            <label>Postcode*</label>
                            <input type="text" id="Postcode" placeholder="postcode" onblur="postcode(this)" maxlength="7">
                            <div id="PostcodeError" style="color: red;"></div>

                            <label>Woonplaats*</label>
                            <input type="text" id="Woonplaats" placeholder="woonplaats" onblur="woonplaats(this)" maxlength="40">
                            <div id="WoonplaatsError" style="color: red;"></div>

                            <label>Telefoonnummer mobiel*</label>
                            <input type="text" id="Telefoonnummer" placeholder="telefoonnummer" onblur="telefoonnummer(this)" maxlength="20">
                            <div id="telError" style="color: red;"></div>

                            <label>Email adres*</label>
                            <input type="text" id="Email" placeholder="email" onblur="email(this)" maxlength="20">
                            <div id="emailError" style="color: red;"></div>

                            <input type="submit" value="post">
                    </form>

问题是您在 getElementById 中使用 EmailError 作为 ID,但它是 emailError。 ID 区分大小写。

调试此类错误的另一种方法是使用 Google Chrome 调试器或其他开发工具来捕获未捕获的异常并查看哪个 getElementById 未能获得节点(您试图在哪个元素上设置 innerHTML)。

或者您可以通过将这些一一粘贴到控制台来测试哪个不起作用:

  1. document.getElementById('VoornaamError')
  2. document.getElementById('EmailError')

这些是很好的故障排除基本方法 JavaScript 需要一点时间来学习,但对您今后的发展会有很大帮助。

您的 id="emailError" 是小写 e,但 getElementById('EmailError') 是大写 E。 ID 区分大小写!