评论和回复是用户生成内容(UGC)平台上的常见功能,允许用户对文章、视频或其他内容发表意见,并且可以对其他用户的评论进行回复。
以下是一个使用JavaScript实现评论和回复的基本示例:
<div id="comments">
<!-- 评论将动态加载到这里 -->
</div>
<form id="commentForm">
<textarea id="commentText" placeholder="输入你的评论"></textarea>
<button type="submit">提交评论</button>
</form>
document.getElementById('commentForm').addEventListener('submit', function(event) {
event.preventDefault();
const commentText = document.getElementById('commentText').value;
if (commentText.trim()) {
addComment(commentText);
document.getElementById('commentText').value = ''; // 清空输入框
}
});
function addComment(text, parentId = null) {
const commentsDiv = document.getElementById('comments');
const commentElement = document.createElement('div');
commentElement.classList.add('comment');
if (parentId) {
// 如果是回复,则添加到对应的评论下
const parentComment = document.querySelector(`.comment[data-id="${parentId}"]`);
const repliesDiv = document.createElement('div');
repliesDiv.classList.add('replies');
repliesDiv.appendChild(commentElement);
parentComment.appendChild(repliesDiv);
} else {
// 否则直接添加到评论列表
commentsDiv.appendChild(commentElement);
}
const textElement = document.createElement('p');
textElement.textContent = text;
commentElement.appendChild(textElement);
// 添加回复按钮
const replyButton = document.createElement('button');
replyButton.textContent = '回复';
replyButton.addEventListener('click', function() {
const replyText = prompt('请输入你的回复:');
if (replyText) {
addComment(replyText, commentElement.dataset.id);
}
});
commentElement.appendChild(replyButton);
// 设置评论的唯一标识
commentElement.dataset.id = Date.now();
}
问题1:评论加载缓慢
问题2:回复层级过深导致页面结构混乱
问题3:跨浏览器兼容性问题
通过上述方法,可以实现一个基本的评论和回复系统。在实际应用中,还需要考虑数据持久化、安全性(如防止XSS攻击)以及用户体验优化等方面。
领取专属 10元无门槛券
手把手带您无忧上云