javascript – 如何修复“Uncaught TypeError:无法调用方法’appendChild’的null”

我试图从HTML文本区域抓取文本,并在按下“提交”按钮时调用create()方法.该方法尝试使用来自文本区域的消息,并使用类将其发布到其自己的p标记,并在其自己的p标记和其自己的类中发布日期戳.

这些都将在div’评论’中.我得到的错误(使用Chrome中的开发者工具)是

Uncaught TypeError: Cannot call method ‘appendChild’ of null.

这是针对“cmt.appendChild(divTag);”.我对Javascript很新,这只是为了提高我的技能.非常感谢所有帮助!

var cmt = document.getElementById('comments');

function create() {

    var username = 'User',
        message = document.getElementById("textBox").value,
        divTag = document.createElement('div'),
        p1 = document.createElement('p'),
        p2 = document.createElement('p');

    divTag.className = 'comment';

    p1.className = 'date';
    p1.innerHTML = new Date();
    divTag.appendChild(p1);

    p2.className = 'message';
    p2.innerHTML = username + ': ' +message;
    divTag.appendChild(p2);

    cmt.appendChild(divTag);
}

解决方法:

您收到的错误表明您的网页上没有ID“评论”的元素.当没有找到具有这种ID的元素时,document.getElementById将返回null,因此cmd.appendChild(divTag)将作为null.appendChild(divTag)执行.

如果您确定该元素存在,那么您可能正在执行您的JavaScript,该JavaScript在浏览器创建该元素之前分配cmt变量.为了防止这种情况,标准做法是放置< script>在结束之前包含外部JavaScript的标记< / body>标签.

如果由于某种原因无法移动脚本标记,请尝试运行使用$(document).ready()(jQuery)or equivalent分配变量的代码.

上一篇:DOM


下一篇:10.1利用DOM创建标签