用原生dom实现发表评论,时间,表情,点赞,回复
时间: 2024-03-27 16:35:31 浏览: 17
好的,下面是一个使用原生DOM实现发表评论、显示时间、添加表情、点赞和回复功能的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>评论功能示例</title>
</head>
<body>
<h3>评论功能示例</h3>
<!-- 发表评论 -->
<input type="text" id="comment-input">
<button id="comment-btn">发表评论</button>
<!-- 评论列表 -->
<ul id="comment-list"></ul>
<script>
// 先获取相关的DOM元素
var commentInput = document.getElementById('comment-input');
var commentBtn = document.getElementById('comment-btn');
var commentList = document.getElementById('comment-list');
// 定义一个函数,用于获取当前时间字符串
function getCurrentTime() {
var date = new Date();
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
}
// 定义一个函数,用于添加表情到输入框中
function addEmoji(emoji) {
commentInput.value += emoji;
}
// 定义一个函数,用于添加一条评论
function addComment(text) {
var li = document.createElement('li');
var time = getCurrentTime();
li.innerHTML = '<div>' + text + '</div><div class="info"><span>' + time + '</span><a href="#" class="like-btn">赞</a><a href="#" class="reply-btn">回复</a></div>';
commentList.appendChild(li);
}
// 添加评论
commentBtn.onclick = function() {
var text = commentInput.value.trim();
if (text) {
addComment(text);
commentInput.value = '';
}
};
// 点赞
commentList.addEventListener('click', function(event) {
if (event.target.className === 'like-btn') {
event.preventDefault();
var likeBtn = event.target;
var count = parseInt(likeBtn.dataset.likeCount) || 0;
count++;
likeBtn.innerText = '赞 (' + count + ')';
likeBtn.dataset.likeCount = count;
}
});
// 回复
commentList.addEventListener('click', function(event) {
if (event.target.className === 'reply-btn') {
event.preventDefault();
var replyBtn = event.target;
var li = replyBtn.parentNode.parentNode;
var replyInput = document.createElement('input');
var replyBtn2 = document.createElement('button');
replyBtn2.innerText = '回复';
replyBtn2.onclick = function() {
var text = replyInput.value.trim();
if (text) {
addComment(text);
replyInput.parentNode.removeChild(replyInput);
replyBtn2.parentNode.removeChild(replyBtn2);
}
};
li.appendChild(replyInput);
li.appendChild(replyBtn2);
}
});
</script>
</body>
</html>
```
这个示例实现了以下功能:
1. 输入框输入评论内容后,点击“发表评论”按钮可以将评论添加到列表中。
2. 评论列表中每条评论的下方显示了评论的时间、点赞按钮和回复按钮。
3. 点击点赞按钮可以给评论点赞,并显示点赞数。
4. 点击回复按钮可以在该评论下方添加一个回复输入框和一个“回复”按钮,点击“回复”按钮可以将回复添加到列表中。