无法使用数组设置null的属性'innerHTML'

时间:2015-03-30 15:16:11

标签: javascript

有人能告诉我这里有什么问题吗?我有一个表单,其中包含验证电子邮件地址的内容,应该做的是创建新阵列和在表单下方打印是否正确,以及何时不仅仅是一个简单的警报。这是HTML:

    <form>
        <table>
            <tr>
                <td>Your email address</td>
                <td>
                    <input type="text" id="txtEmail">
                </td>
            </tr>
            <tr>
                <td>
                    <input type="button" value="Register me" onclick="check();">
                </td>
            </tr>
      </table>
    </form>

这是JS:

function check() {
    var email = document.getElementById("txtEmail").value;
    var reEmail = /^(\w)+(\d)*(\.\_)*@[a-z]{2,10}\.[a-z]{2,5}$/;
    var correct = new Array();
    if(email.match(reEmail)){
        correct.push(email);
        document.getElementById("prikaz").innerHTML = correct;          
        }
        else {
            alert("Not correct");
        }

}

2 个答案:

答案 0 :(得分:3)

您的HTML应该是这样的:

<form>
    <table>
        <tr>
            <td>Your email address</td>
            <td>
                <input type="text" id="txtEmail">
            </td>
        </tr>
        <tr>
            <td>
                <input type="button" value="Register me" onclick="check();">
            </td>
        </tr>
        <tr>

  </table>

</form>
<div id="prikaz">
</div>

你的JS应该是这样的:

var correct =new Array();
function check() {
    var email = document.getElementById("txtEmail").value;
    var reEmail = /^(\w)+(\d)*(\.\_)*@[a-z]{2,10}\.[a-z]{2,5}$/;
    if(email.match(reEmail)){
        correct.push(email);
    }
    else {
        alert("Not correct");
    }
    var correctEmails = "<table>";
    for(var i=0; i< correct.length; i++){
        correctEmails+=("<tr><td>"+correct[i]+"</td></tr>");

    }
    correctEmails+="</table>"
    document.getElementById("prikaz").innerHTML = correctEmails; 
}

答案 1 :(得分:0)

你没有id&#34; prikaz&#34;所以getElementById返回null。

即使它确实返回了某些内容,我也没有看到将它的innerHTML设置为数组的重点,因为该字段用于将被解析为HTML的文本。