首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现点赞功能

要在JavaScript中实现点赞功能,你需要考虑以下几个方面:

基础概念

  1. DOM操作:通过JavaScript操作HTML文档对象模型,实现点赞按钮的点击事件监听和页面元素的更新。
  2. 事件监听:使用addEventListener方法为点赞按钮添加点击事件。
  3. Ajax/Fetch API:用于与服务器进行异步通信,实现点赞数据的提交和点赞数量的实时更新。
  4. 后端接口:服务器端需要提供一个API接口,用于处理点赞请求和更新点赞数量。

实现步骤

  1. HTML结构
代码语言:txt
复制
<button id="likeButton">点赞</button>
<span id="likeCount">0</span>
  1. JavaScript代码
代码语言:txt
复制
document.addEventListener('DOMContentLoaded', function() {
    const likeButton = document.getElementById('likeButton');
    const likeCount = document.getElementById('likeCount');
    let isLiked = false; // 标记当前用户是否已经点赞

    likeButton.addEventListener('click', function() {
        if (isLiked) {
            // 如果已经点赞,则取消点赞
            unlike();
        } else {
            // 如果未点赞,则点赞
            like();
        }
    });

    function like() {
        fetch('/api/like', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({ action: 'like' })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                likeCount.textContent = data.likeCount;
                isLiked = true;
                likeButton.textContent = '取消点赞';
            } else {
                alert('点赞失败,请重试');
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('点赞失败,请重试');
        });
    }

    function unlike() {
        fetch('/api/like', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({ action: 'unlike' })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                likeCount.textContent = data.likeCount;
                isLiked = false;
                likeButton.textContent = '点赞';
            } else {
                alert('取消点赞失败,请重试');
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('取消点赞失败,请重试');
        });
    }
});

后端接口示例(Node.js + Express)

代码语言:txt
复制
const express = require('express');
const app = express();
app.use(express.json());

let likeCount = 0;

app.post('/api/like', (req, res) => {
    const action = req.body.action;
    if (action === 'like') {
        likeCount++;
    } else if (action === 'unlike') {
        likeCount--;
    } else {
        return res.status(400).json({ success: false, message: 'Invalid action' });
    }
    res.json({ success: true, likeCount: likeCount });
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

优势

  1. 实时更新:通过Ajax/Fetch API实现点赞数量的实时更新,提升用户体验。
  2. 用户友好:用户可以方便地点赞和取消点赞,界面友好。
  3. 可扩展性:后端接口可以处理更多的业务逻辑,如用户身份验证、防止重复点赞等。

应用场景

  • 社交媒体平台
  • 博客文章点赞
  • 视频点赞
  • 商品评价点赞

可能遇到的问题及解决方法

  1. 重复点赞:可以通过用户身份验证和数据库记录来防止同一用户重复点赞。
  2. 点赞数量不同步:确保前后端数据一致性,使用事务处理或乐观锁机制。
  3. 网络延迟:使用加载动画或提示信息来提升用户体验。

通过以上步骤和代码示例,你可以实现一个基本的点赞功能,并根据具体需求进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

利用 leanCloud 实现点赞功能

点赞功能 社交平台的必备良药,谁谁谁什么时候给你点了个赞,点赞什么的貌似已经深入人心了。...之前在 @火喵酱 的博客页面有看到说想用 leancloud 实现 do you like me 的点赞功能,之前没接触 leancloud 的 SDK 不知道咋搞,后来就不了了之,然后因为最近做了 valine...的最新评论排行,所以借这个风顺便来做个点赞功能~ 点赞按钮 实践操作 和 valine 最新评论一样,首先需要引入 sdk 并初始化完成化后接入具体实现的代码即可(这个就不说了,上篇笔记里有写的) 实现思路...因为我要做的是页面点赞功能,所以可能会比 do you like me 那个稍稍多个步骤。...这里再聊下思路,一般做点赞功能都是在本地点击计数之后再把数据上传到云端服务器,访问页面的时候直接根据页面拉取对应的数据填充即可。

14110
  • Redis实现点赞取消点赞

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...id,点赞用户id,点赞状态。

    3.1K31

    Redis位图实现点赞签到相关功能

    前言 对于我们平时的一些社区应用,如微博,知乎,掘金等应用点赞,评论这类功能是不可或缺的,例如点赞功能我们其实是可以通过 mysql 去做实现的,但是每次点赞都去实时改库可以想象一下当遇到一个热点文章例如...字节的内容也就是2^32b; ❝2^(9(512)+10(1024)+10(1024)+3(8b=1B))=2^32b ❞ 应用场景: 用户签到 用户在线状态 统计活跃用户 各种状态值 自定义布隆过滤器 点赞功能...integer) 0 //查找 127.0.0.1:6379> getbit a 2 (integer) 1 //统计 127.0.0.1:6379> bitcount a (integer) 2 点赞功能...点赞功能 我这里的处理方式是异步改库,点完赞之后异步修改数据库,不要求实时处理结果其实可以用定时任务去批量改库(需要存一定时间内的 postId 和 userId 索引关系); @Override public...一个简单的位图实现点赞等功能就实现了,大家一个举一反三哈,玩法还是很多的,大家也可以根据自己的需求去做优化,希望可以对大家有帮助,有不对的地方希望大家可以提出来的,共同成长。 ❞

    1K10

    使用代码方式实现WordPress文章点赞功能

    实现思路 通过 ajax 实时显示点赞数量,自定义字段保存赞数量,Cookies 禁止重新点赞。...click", ".favorite", function() { $(this).postLike(); }); 修改文章页面single.php,在你需要的位置添加一个点赞按钮...> 通过上面的三段代码就已经实现文章点赞功能,但是样式效果惨不忍睹,作者还提供了下面的样式,添加到主题style.css中(下方样式xiaoz未经测试) .post-like...但如果您网站启用了CDN,或使用了WP-Super-Cache这类静态缓存插件后,页面会被提前缓存起来,这样判断也就失效了,便可以无限点赞,于是xiaoz进行了改进,通过js再判断一次COOKIES是否存在...; } else{ $(this).postLike(); } }); 总结 最后实现的功能类似小z博客文章下方的点赞效果,这里主要提供思路和代码实现

    1.1K10

    点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    1.9K60

    点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 后期继续分享会当下最流行的xxl-job,Elastic-Job

    6.5K40

    点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 如有更好的实现方案欢迎在评论区交流… 项目地址:https://github.com/cachecats/coderiver

    2.2K50

    Redis是如何实现点赞、取消点赞的?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    3.3K50

    Redis是如何实现点赞、取消点赞的?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 如有更好的实现方案欢迎在评论区交流…

    2.6K20

    Redis是如何实现点赞、取消点赞的?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    2.5K20

    Redis 是如何实现点赞、取消点赞的?

    领读: 点赞是个频率比较高的事件,也不是特别重要的记录,使用缓存来存储还是比较合理的,另外像排行榜、热议等都可以使用缓存,先来看看点赞是如何实现的吧,详细代码可以clone看下哈,跟紧脚步,学技术~ -...点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    7K64

    Redis 是如何实现点赞、取消点赞的?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户 id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    2.9K10

    使用 Redis 如何实现点赞,取消点赞呢?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...文章分四部分介绍: Redis 缓存设计及实现 数据库设计 数据库操作 开启定时任务持久化存储到数据库 一、Redis 缓存设计及实现 1.1 Redis 安装及运行 Redis 安装请自行查阅相关教程...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 如有更好的实现方案欢迎在评论区交流… 代码出自开源项目 CodeRiver,致力于打造全平台型全栈精品开源项目。

    2.3K20
    领券