评论数据宜存为JS对象数组(如{ id: 1, author: "张三", content: "不错!", time: "2024-06-12" }),用document.createElement动态生成带唯一id和datetime属性的HTML结构,避免硬编码或localStorage初始化,确保可维护性与语义化。
直接写死在 HTML 里最简单,适合静态演示;但真要用户提交,就得用 JS 模拟或连后端。先从静态开始——把评论当 JS 对象数组存在 comments 变量里,结构统一:{ id: 1, author: "张三", content: "不错!", time: "2024-06-12" }。别用 localStorage 存初始数据,加载顺序容易错,也难调试。
别手写一堆 <div> 堆在 HTML 里,用 document.createElement 或模板字符串拼接更可控。重点注意:每条评论必须有唯一 id(比如 comment-1),方便后续删改;时间字段建议用 datetime 属性,语义清晰:<time datetime="2024-06-12">2024-06-12</time>。示例片段:
comments.forEach(c => { const el = document.createElement('article'); el.innerHTML = ` <header><strong>${c.author}</strong> <time datetime="${c.time}">${c.time}</time></header> <p>${c.content}</p> `; el.id = `comment-${c.id}`; document.getElementById('comment-list').appendChild(el);});
关键不是加阴影动效,而是处理好默认样式冲突:重置 <ul>/<ol> 的 margin 和 padding;给每条评论加 margin-bottom: 1rem;用 line-height: 1.5 提升可读性;作者名用 font-weight: 600 区分层级。别忘了给 <time> 加 color: #666 和小号字体,否则和正文混在一起。
常见问题集中在三处:
event.preventDefault(),一提交就刷新页面id 字段,导致后续无法定位删除nextId = comments.length + 1,每次新增后自增,避免 ID 冲突。如果只是 demo,不需要后端,就别碰 fetch,纯前端模拟足够。立即学习“前端免费学习笔记(深入)”;
真实项目里,评论的排序、分页、防 XSS 过滤、时间格式化这些才是暗坑,静态页面先确保结构和交互链路跑通就行。