我试图从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分配变量的代码.