简单的评论系统【JavaScript】

news2024/12/24 20:15:15

这段代码实现了一个简单的评论系统,用户可以输入评论并提交,评论会显示在页面上,同时可以通过点击“删除”按钮来删除相应的评论。

实现效果:

代码:

<!DOCTYPE html>
<html lang="zh">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>评论系统</title>
		<style>
			#comments {
				margin-top: 20px;
				font-size: 12px;
			}

			.comment {
				border: 1px solid #ccc;
				margin-bottom: 10px;
				padding: 10px;
				position: relative;
			}

			.delete-btn {
				position: absolute;
				top: 5px;
				right: 5px;
				background-color: red;
				color: white;
				border: none;
				cursor: pointer;
			}
		</style>
	</head>
	<body>

		<h1>发表评论</h1>
		<textarea id="commentInput" placeholder="请输入评论..." rows="5" cols="40"></textarea><br>
		<button id="submitComment">提交评论</button>
		<div id="comments"></div>

		<script>
			document.getElementById('submitComment').addEventListener('click', function() {
				const commentInput = document.getElementById('commentInput');
				const commentText = commentInput.value.trim();

				if (!commentText) {
					return alert('评论不能为空!');
				}

				// 创建评论元素
				const commentDiv = document.createElement('div');
				commentDiv.className = 'comment';
				commentDiv.textContent = commentText;

				// 添加删除按钮
				const deleteBtn = document.createElement('button');
				deleteBtn.className = 'delete-btn';
				deleteBtn.textContent = '删除';
				deleteBtn.onclick = function() {
					commentsDiv.removeChild(commentDiv);
				};
				commentDiv.appendChild(deleteBtn);

				// 获取评论区元素
				const commentsDiv = document.getElementById('comments');
				commentsDiv.prepend(commentDiv); // 使用 prepend 插入到最前面

				// 清空输入框
				commentInput.value = '';
			});
		</script>
	</body>
</html>

部分代码解析:

document.getElementById('submitComment').addEventListener('click', function() {
				const commentInput = document.getElementById('commentInput');
				const commentText = commentInput.value.trim();

				if (!commentText) {
					return alert('评论不能为空!');
				}

				// 创建评论元素
				const commentDiv = document.createElement('div');
				commentDiv.className = 'comment';
				commentDiv.textContent = commentText;

				// 添加删除按钮
				const deleteBtn = document.createElement('button');
				deleteBtn.className = 'delete-btn';
				deleteBtn.textContent = '删除';
				deleteBtn.onclick = function() {
					commentsDiv.removeChild(commentDiv);
				};
				commentDiv.appendChild(deleteBtn);

				// 获取评论区元素
				const commentsDiv = document.getElementById('comments');
				commentsDiv.prepend(commentDiv); // 使用 prepend 插入到最前面

				// 清空输入框
				commentInput.value = '';
			});

这段 JavaScript代码 ,用于处理用户的评论输入和展示。以下是逐步解析:

  1. 事件监听

    document.getElementById('submitComment').addEventListener('click', function() {
    

    当用户点击 ID 为 submitComment 的按钮时,会触发这个事件监听器。

  2. 获取输入内容

    const commentInput = document.getElementById('commentInput');
    const commentText = commentInput.value.trim();
    

    这两行代码获取 ID 为 commentInput 的输入框,并获取用户输入的文本,去除前后空格。

  3. 空输入检查

    if (!commentText) {
        return alert('评论不能为空!');
    }
    

    如果用户没有输入任何评论,会弹出一个警告提示,并停止执行后面的代码。

  4. 创建评论元素

    const commentDiv = document.createElement('div');
    commentDiv.className = 'comment';
    commentDiv.textContent = commentText;
    

    创建一个新的 div 元素,设置其类名为 comment,并将用户的评论文本填入。

  5. 添加删除按钮

    const deleteBtn = document.createElement('button');
    deleteBtn.className = 'delete-btn';
    deleteBtn.textContent = '删除';
    deleteBtn.onclick = function() {
        commentsDiv.removeChild(commentDiv);
    };
    commentDiv.appendChild(deleteBtn);
    

    创建一个删除按钮,设置类名和文本。为按钮添加一个点击事件,当点击时,从评论区中删除该评论。

  6. 获取评论区元素并添加评论

    const commentsDiv = document.getElementById('comments');
    commentsDiv.prepend(commentDiv);
    

    获取 ID 为 comments 的评论区,并使用 prepend 方法将新的评论插入到评论区的最前面。

  7. 清空输入框

    commentInput.value = '';
    

    最后,清空评论输入框,以便用户可以输入新的评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel名字查重筛选,查找重复内容原来这么简单

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f50d; 在处理大量数据时&#xff0c;尤其是人员名单或客户信息时&#xff0c;确保没有重复的名字是非常重要的。在Excel中&#xff0c;有几种方法可以帮助我们快速查找和处理重复的名字。今天&#xff0c;我们将介绍…

2024年9月24日历史上的今天大事件早读

1550年9月24日 明代戏剧家汤显祖出生 1852年9月24日 法国人吉法尔制造的用蒸汽机推进的飞船试飞成功 1884年9月24日 中国近代化学的先驱徐寿逝世 1905年9月24日 吴樾壮炸五大臣&#xff0c;身殉革命 1909年9月24日 京张铁路通车 1910年9月24日 剧作家曹禺诞生 1930年9月2…

Python基础练习题‌100道电子版及源码文件

Python基础练习题‌&#xff0c;旨在帮助学习者巩固和提升Python编程技能。以下是一些精选的练习题目&#xff0c;包括但不限于&#xff1a; 基础语法练习‌&#xff1a;涉及变量定义、数据类型、运算符、条件语句、循环等基础语法结构的应用。例如&#xff0c;编写程序来处理数…

使用Adobe XD进行制作SVG字体

制作SVG字体的办法有很多&#xff0c;我这里选择了Adobe XD进行制作。 1.选择画布尺寸 2 输入文本 设置字体样式 3 设置画布背景 4 转换字体&#xff08;物件&#xff09;路径 5 设置组 复制SVG代码 6 放入到Html中 <!DOCTYPE html> <html lang"zh">&l…

稀疏向量 milvus存储检索RAG使用案例

参考&#xff1a; https://milvus.io/docs/hybrid_search_with_milvus.md milvus使用不方便&#xff1a; 1&#xff09;离线计算向量很慢BGEM3EmbeddingFunction 2&#xff09;milvus安装环境支持很多问题&#xff0c;不支持windows、centos等 在线demo&#xff1a; https://co…

基于单片机的智能窗帘控制系统-设计说明书

设计摘要&#xff1a; 智能窗帘控制系统是一种利用单片机技术实现的智能化控制系统&#xff0c;可以实现窗帘的自动开合和定时控制功能。本系统的设计基于单片机技术&#xff0c;结合传感器、电机和执行器等硬件设备&#xff0c;实现对窗帘的智能化控制。通过传感器采集环境信…

同一网络下两台电脑IP一样吗?探究局域网内的IP分配机制

在日常生活和工作中&#xff0c;我们经常会在同一网络环境下使用多台电脑。这时&#xff0c;一个常见的问题就会浮现&#xff1a;同一网络下两台电脑IP一样吗&#xff1f;这个问题看似简单&#xff0c;但实际上涉及到局域网内的IP分配机制。本文将深入探讨这一问题&#xff0c;…

JDBC PreparedStatement解决SQL注入方案

文章目录 获取PreparedStatement对象PreparedStatement是如何解决SQL注入问题的PreparedStatement的 应用上述如何解决sql注入的问题呢&#xff1f; 获取PreparedStatement对象 PreparedStatement是Statement的子接口&#xff0c;可以防止sql注入问题。可以通过Connection接口…

AI最大的应用是什么,如何成为初代AGI产品经理?

❝ 在当今这个由数据驱动的时代&#xff0c;AI技术正以前所未有的速度发展&#xff0c;它不仅改变了我们与数字世界的互动方式&#xff0c;更在物理世界中掀起了一场革命。阿里巴巴集团CEO吴泳铭在2024云栖大会上的演讲&#xff0c;为我们描绘了AI技术未来的巨大潜力。他指出&a…

【浙江工业大学主办 | EI检索稳定】HCIVR 二轮截稿 时间

二轮截稿日期&#xff1a;2024年10月15日 收录检索&#xff1a;EI Compendex&#xff0c;Scopus 征稿主题&#xff1a; 光学手势识别系统、生物识别、眼动追踪和表情识别、光势行为分析、传感器技术、光学传感与虚拟现实交互、光学跟踪与定位系统、声光传感融合系统、基于VR的…

在WordPress中使用Simple Custom CSS and JS插件美化页面

目录 一、插件安装 二、添加代码 三、使用案例 1、图片居中 2、段落前空两格 3、添加版权声明 四、代码编写简述 WordPress是目前使用最广泛的开源建站框架&#xff0c;其主要功能就是“主题”&#xff08;Theme&#xff09;系统&#xff0c;该功能可以让用户自定义主题…

【网络协议栈】传输层的意义 和 UDP协议结构的解析(内含逻辑图解通俗易懂)

绪论​ “六年之约—jack”。本章是网络协议栈第二个主要模块 传输层&#xff0c;传输层在网络层中是非常重要的&#xff0c;他主要通过储存双方的端口记录数据的来源以及数据最终的去处&#xff0c;并且能一定的保证数据传输到达&#xff0c;以及快速高效的传递。本章主要讲到…

web群集--rocky9.2部署zabbix服务端的详细过程

文章目录 zabbix介绍1. Zabbix 简介2. Zabbix 的核心组件3. Zabbix 的工作原理4. Zabbix 的优势5. Zabbix 的应用场景 部署过程 zabbix介绍 1. Zabbix 简介 Zabbix 是一个 企业级开源监控工具&#xff0c;它能够对各种 IT 组件进行实时监控&#xff0c;包括网络设备、服务器、…

ES6的简单介绍(第二部分)

五 异步编程 5.1 回调函数 5.1.1 概念 回调函数(callback function)&#xff0c;当一个函数作为参数传入另一个参数中&#xff0c;并且它不会立即执行&#xff0c;只有当满足一定条件后该函数才可以执行&#xff0c;这种函数就称为回调函数。 你可以将其理解为 回头再调用的意…

如何进行“服务器内部错误”的诊断 | OceanBase诊断案例

本文作者&#xff1a;任仲禹&#xff0c;爱可生数据库高级工程师&#xff0c;擅长故障分析和性能优化。 的OMS迁移工具具备丰富的功能。但在实际运维场景中&#xff0c;我们可能会遇到各种问题&#xff0c;其中“服务器内部错误”便是一个较为棘手的问题&#xff0c;因为界面上…

运行python程序

1 终端运行 1.1、直接在python解释器中书写代码 >>> print(法外狂徒) 法外狂徒 …

【C++掌中宝】走进C++引用的世界:从基础到应用

文章目录 引言1. 基础概念2. 引用与指针的区别3. 引用的应用场景3.1 引用作为函数参数3.2 引用作为函数返回值3.3 常引用&#xff08;const引用&#xff09;的使用3.4 引用与多态 4. C 引用的优缺点5. 引用的注意事项与常见陷阱6. 总结结语 引言 C 引用是编写高效、简洁代码的…

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…

【JVM】JVM执行流程和内存区域划分

是什么 Java 虚拟机 JDK&#xff0c;Java 开发工具包JRE&#xff0c;Java 运行时环境JVM&#xff0c;Java 虚拟机 JVM 就是 Java 虚拟机&#xff0c;解释执行 Java 字节码 JVM 执行流程 编程语言可以分为&#xff1a; 编译型语言&#xff1a;先将高级语言转换成二进制的机器…

爆火南卡开放式耳机,音质性能霸榜TOP1,行业唯一达专业HiFi级音质标准!

爆火南卡开放式耳机&#xff0c;音质性能霸榜TOP1&#xff0c;行业唯一达专业HiFi级音质标准&#xff01; 随着科技的不断进步&#xff0c;耳机市场迎来了又一次革命性的创新。南卡&#xff08;NANK&#xff09;品牌近日宣布&#xff0c;其最新力作——南卡Ultra耳夹开放式耳机…