百万前端之JavaScript+jquery实现点赞、收藏、评论功能

2023-10-27

点赞收藏的原理都是一样,通过点击切换文字和图片实现动态点赞收藏功能。

图标来源 阿里图标库

评论功能原理也很简单,在页面中写好评论css样式,再通过js生成div节点,再嵌套内容,用最原始的方法,解决最常见的问题,简单易懂。

需要引入jquery-3.6.0.js,自行前往官网下载 

<script src="../indexMenus/jquery/jquery-3.6.0.js"></script>
<script src="../indexMenus/jquery/jquery-1.11.0.min.js"></script>
<script src="../indexMenus/jquery/dialog.js"></script>

还有评论弹窗所需的css

<link rel="stylesheet" href="../indexMenus/jquery/dialog.css">

下面开始上代码

点赞、收藏、评论、删除评论的功能实现js

            // 收藏
			$(document).ready(function() {
				$("#collect").click(function() {
					$("#thumbs1").toggle();
					$("#colltext").toggle();
					$("#thumbs2").toggle();
					$("#colltext2").toggle();
				});
			});
			// 点赞
			$(document).ready(function() {
				$("#umbsbtn").click(function() {
					$("#umbsimg").toggle();
					$("#umbs1").toggle();
					$("#umbsimg2").toggle();
					$("#umbs2").toggle();
					$(".user-forum-thumbs-users").toggle();
				});
			});
			// 评论
			$(document).ready(function() {
				$("#openspeek").click(function() {
					$("#dialogs").toggle();
				});
			});
			// 评论弹窗关闭
			function diacloses() {
				document.getElementById("dialogs").style.display = "none";
			};
			// 发表评论
			function addDiv() {
				// 添加节点嵌套
				var node = document.createElement('div');
				var txt1 = document.createElement("p");
				var txt2 = document.createElement("span");
				var txt3 = document.createElement("span");
				var txt4 = document.getElementById('dialogtext').value;
				var btn1 = document.createElement('button');
				var btntxt = document.createElement('span');
				if (txt4 == '' || txt4 == ' ') {
					alert('请输入评论内容!');
				} else {
					node.className = 'user-remarks-content';
					btn1.id = 'btndel';
					// 插入内容
					txt2.innerHTML = "李诗诗:";
					txt3.innerHTML = txt4;
					btntxt.innerHTML = "删除";
					btn1.innerHTML = "<img src=" + '../indexMenus/img/remarks.png' + ">";
					// 继续嵌套
					txt1.appendChild(txt2);
					txt2.appendChild(txt3);
					node.appendChild(txt1);
					btn1.appendChild(btntxt);
					node.appendChild(btn1);
					// 添加评论
					document.getElementById("addcontent").appendChild(node);
					// 输入null内容后跳出弹窗
					document.getElementById("dialogs").style.display = "none";
					// 跳出弹窗后清空文本内容
					$('#dialogtext').val('');

				};
				// 删除评论
				// 只能删一次
				$("#btndel").on("click", function() {
					$(this).parent().remove();
				});
			}

html部分

<!-- 点赞评论 -->
				<div class="user-forum-thumbs">
					<button id="openspeek">
						<img src="../indexMenus/img/thumbs5.png">
						<span>评论</span>
					</button>
					<button id="umbsbtn">
						<img src="../indexMenus/img/thumbs3.png" id="umbsimg">
						<span id="umbs1">点赞</span>
						<img src="../indexMenus/img/thumbs4.png" id="umbsimg2" style="display: none;">
						<span id="umbs2" style="display: none;">取消</span>
					</button>
					<button id="collect">
						<img src="../indexMenus/img/thumbs1.png" id="thumbs1">
						<span id="colltext">收藏</span>
						<img src="../indexMenus/img/thumbs2.png" id="thumbs2" style="display: none;">
						<span id="colltext2" style="display: none;">取消</span>
					</button>
				</div>
				<!-- 点赞用户 -->
				<div class="user-forum-thumbs-users" style="display: none;">
					<span><img src="../indexMenus/img/thumbs6.png"> 李诗诗</span>
				</div>
				<!-- 评论添加 -->
				<div class="user-remarks-addcontent" id="addcontent"></div>
				<!-- 评论删除图片 -->
				<img src="../indexMenus/img/remarks.png" id="remarks" style="display: none;">
				<!-- 分割线 -->
				<div class="user-content-solid"></div>
			</div>
			<!-- 发布评论 -->
			<div class="user-com-go">
				<div class="com-imgs">
					<a href="../indexMenus/forum-content.html"><img src="../dynamic/img/comm1.png"></a>
				</div>
			</div>

			<!-- 点击输入评论内容弹窗 -->
			<div class="dialog-wrap dialog-wrap-show" style="display: none;" id="dialogs">
				<div class="dialog-overlay"></div>
				<div class="dialog-content">
					<div class="dialog-content-hd">
						<h4 class="dialog-content-title">评论回复</h4>
					</div>
					<div class="dialog-content-bd">
						<textarea name="dialog" id="dialogtext" cols="36%" rows="10"
							style="margin-top: 5%;padding: 3%;margin-left: 2%;" placeholder="输入你想说的内容..."></textarea>
					</div>
					<div class="dialog-content-ft">
						<a class="dialog-btn dialog-btn-cancel" id="diacloses" onclick="diacloses()">取消</a>
						<a class="dialog-btn dialog-btn-ok" id="diacloses2" onclick="addDiv()">确定</a>
					</div>
				</div>
			</div>

 css部分 这部分可根据实际内容进行调整

.user-forum-thumbs {
			width: 100%;
			height: 3.5vh;
			margin-top: 3%;
		}

		.user-forum-thumbs>button {
			width: 20%;
			text-align: right;
			padding-right: 2%;
			float: right;
			border: 0;
			outline: none;
			background-color: #ffffff;
			cursor: pointer;
			font-size: 13px;
			height: 3vh;
		}

		.user-forum-thumbs>button:hover {
			color: red;
		}

		.user-forum-thumbs>button>img {
			display: inline-block;
			padding-bottom: 0.4vh;
			padding-right: 1vw;
		}

		.user-forum-thumbs-users {
			width: 90%;
			padding-left: 5%;
			margin-bottom: 2%;
		}

		.user-forum-thumbs-users>span {
			font-size: 12px;
			color: #0e90d2;
		}

		.user-remarks-content {
			width: 85vw;
			margin-left: 6vw;
			line-height: 3vh;
		}

		.user-remarks-content>p {
			font-size: 14px;
		}

		.user-remarks-content>p>span {
			color: #0e90d2;
		}

		.user-remarks-content>p>span>span {
			color: black;
		}

		.user-remarks-content>button {
			width: 16%;
			border: 0;
			height: 3vh;
			background-color: #ffffff;
			color: #0e90d2;
			cursor: pointer;
		}

		.user-remarks-content>button>img {
			float: left;
		}

		.user-remarks-content>button>span {
			float: left;
			margin-top: 0.2vh;
			font-size: 12px;
		}

		.user-content-solid {
			width: 94vw;
			border-bottom: 1px solid #cdcecf;
			margin-top: 3%;
		}

		#userTxt {
			color: black;
			font-size: 14px;
			display: inline-block;
		}
		.user-com-go{
			width: 11%;
			height: 5%;
			position: fixed;
			bottom: 8%;
			right: 5%;
			background-color: #999999;
			border-radius: 50%;
			background-color:rgba(0, 0, 0, 0.3)
		}
		.com-imgs{
			width: 2%;
			height: 2%;
			margin-top: 30%;
			margin-left: 30%;

最后就轻松时间三个基础的功能啦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百万前端之JavaScript+jquery实现点赞、收藏、评论功能 的相关文章

  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在没有@import的情况下减少@import?

    我用的较少 从 Google PageSpeed 我了解到 使用 importCSS 文件中的内容会影响网站速度 所以我想排除任何 import来自我的 CSS 的东西 我有 2 个不同的样式表reset css and rebuild c
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 更改文本输入标签中文本的大小?

    我有一个很大的文本输入框 但我无法更改字体大小
  • 如何在jquery中以相反的顺序迭代元素? [复制]

    这个问题在这里已经有答案了 我是jquery的新手 我想知道如何使用each 在jquery中以相反的顺序迭代表单元素 任何帮助 将不胜感激 尝试这个 input get reverse each function
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 带有相对路径的 LESS CSS 背景

    我在使用 LESS 作为我的网站的样式表时遇到了问题 就我个人而言 我宁愿在CSS中使用相对路径而不是绝对路径 这只是我的习惯 但是现在当我使用带有导入功能的LESS时 我遇到了如下所示的问题 我有一个main less根文件夹中的文件 i
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • 【dev on wsl2】wsl2 with vscode简单配置

    wsl2 with vscode简单配置 正文开始 Assassin 目录 wsl2 with vscode简单配置 1 安装wsl2 1 1 安装方式选择 1 2 命令行安装 2 搭配vscode 2 1 新建用户 远程连接vscode
  • C++,类中的构造函数、拷贝构造函数、拷贝赋值函数、析构函数

    类的简介 类是一种将抽象转换为用户定义类型的C 工具 它将数据表示和操纵数据的方法组合成一个整洁的包 一般来说 类规范由两个部分组成 类声明 以数据成员 成员属性 的方式描述数据部分 以成员函数 被称为方法 的方式描述公有接口 类方法定义
  • element-ui嵌套弹框遮罩层解决

    1 element ui嵌套弹框遮罩层解决
  • QNX 如何制作目标系统,制作系统镜像,烧写系统文件

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 author 锋影 e mail 174176320 qq com 制作目标系统的方法如下 以CF卡为例 1 格式化CF卡 2 用dinit传系
  • JenKins + Svn + Maven 自动化构建部署

    也许很多小伙伴会疑问 什么是Jenkins Jenkins是一个功能强大的应用程序 允许持续集成和持续交付项目 无论用的是什么平台 这是一个免费的源代码 可以处理任何类型的构建或持续集成 集成Jenkins可以用于一些测试和部署技术 Jen
  • Python __name__属性和 dir() 函数

    name 属性 一个模块被另一个程序第一次引入时 其主程序将运行 如果我们想在模块被引入时 模块中的某一程序块不执行 我们可以用 name 属性来使该程序块仅在该模块自身运行时执行 if name main print 程序自身在运行 el
  • SpringBoot笔记

    目录 开发准备 导出 常用注解 导出excel到指定位置 导出excel到指定web 导入 将指定位置Excel导入并显示至web 使用ExcelWriter基于模板导出 开发准备 1 导入依赖
  • (记录贴)Docker日志位置及docker日志日期时间精确查询

    docker logs since 2020 07 30T10 14 00 until 2020 07 30T10 15 00 tomcat80 这条代码可以通过2个时间来查询指定范围的时间日志 since起始时间 你要从什么时候开始查询
  • 华为机试---路灯

    题目描述 一条长l的笔直的街道上有n个路灯 若这条街的起点为0 终点为l 第i个路灯坐标为a i 每盏灯可以覆盖到的最远距离为d 为了照明需求 所有灯的灯光必须覆盖整条街 但是为了省电 要是这个d最小 请找到这个最小的d 输入描述
  • tensorflow运行出错 ERROR:root:Internal Python error in the inspect module

    导入模块 运行出现以下错误 使用pip install tensorflow 默认安装的是tensorflow 2 0 往下拉可以看到各种 ImportError DLL load failed 找不到指定的模块 查看官网可以看到相关说明
  • 交叉编译实践-Qt应用程序交叉编译【用cmake工具编译】

    获取更多干货技能 点击 这里 小编文章列表 主页左侧扫码关注公众号 上篇介绍了交叉编译的基本原理 以及交叉编译一个简单的HelloWorld程序 这篇将介绍如何交叉编译Qt程序 由于Qt程序依赖的底层以及第三方的相关库太多
  • 浅谈RPC,gRPC和RESTful

    RPC 远程过程调用 Remote Procedure Call RPC 是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一个地址空间 通常为一个开放网络的一台计算机 的子程序 而程序员就像调用本地程序一样 无需额外地为这个交互
  • SpringBoot中使用lombok

    集成 IDE安装Plugins插件 gt lombok 添加maven依赖
  • 什么是AECQ?

    AECQ是车规验证标准 是克莱斯勒 福特和通用汽车为建立一套通用的零件资质及质量系统标准而设立了汽车电子委员会 AEC AEC 是 Automotive Electronics Council 汽车电子协会 之略 是主要汽车制造商与美国的主
  • 二进制转十进制的程序

    include
  • STM32Cubeide/STM32F103CubeMX生成自定义HID设备

    前面时钟啥的不管了 USB 48Mhz时钟 USB选择Device USB FS 设置参数 34是配置HID作为电脑识别用的 必须是34 64是数据收发用的 HID最大一次64 可以自定义 这两个是电脑识别之后的硬件ID 不知道什么讲究 不
  • git clone下载代码,中途断掉怎么办?

    问题如下 解决办法 1 运行以下命令进行clone git clone recursive https xxxxxx 2 进入项目根目录 继续下载 cd eigen git mirror git submodule update init
  • pycharm.2023.1配置python解释器时找不到conda环境

    问题 在配置python解释器时 添加conda环境 但无法识别Anaconda路径下的python exe或 conda exe 解决办法 打开Anaconda目录下的condabin文件夹 里面有个conda bat 选择后 点击 加载
  • java连接Oracle和PostGreSQL

    1 查看orcale版本 方法一 登录时会显示版本号 oracle ogg1 sqlplus as sysdba SQL Plus Release 11 2 0 3 0 Production on 骀涓 7 20 17 51 14 2015
  • 百万前端之JavaScript+jquery实现点赞、收藏、评论功能

    点赞收藏的原理都是一样 通过点击切换文字和图片实现动态点赞收藏功能 图标来源 阿里图标库 评论功能原理也很简单 在页面中写好评论css样式 再通过js生成div节点 再嵌套内容 用最原始的方法 解决最常见的问题 简单易懂 需要引入jquer