微信小程序实现列表页的点赞和取消点赞功能


Posted in Javascript onNovember 02, 2018

今天开发了一个文章的留言版块,于是想到要为某个留言点赞,点过赞的再次点击会取消点赞,代码如下:

/*更新点赞*/ 
 update_zan:function(e){ 
  var that = this; 
  var data = e.currentTarget.dataset; 
  var mid = data.mid; 
  var cookie_mid = wx.getStorageSync('zan') || [];//获取全部点赞的mid 
  var isadd = 1; 
  var newmessage = []; 
  if (cookie_mid.includes(mid)){//说明已经点过赞,取消赞 
   isadd = 0; 
   var m = 0; 
   for (var j in cookie_mid){ 
    if(cookie_mid[j] != mid){ 
     newmessage[m] = cookie_mid[j]; 
     m++ 
    } 
   } 
   wx.setStorageSync('zan', newmessage);//删除取消赞的mid 
  }else{ 
   cookie_mid.unshift(mid); 
   wx.setStorageSync('zan', cookie_mid);//新增赞的mid 
  } 
  wx.request({ 
   url: app.globalData.api.api_system, 
   data: { 
    action: 'zannum', 
    mid: mid, 
    isadd: isadd, 
    wxid: app.globalData.wxid 
   }, 
   method: 'GET', 
   // header: {},  
   success: function (res) { 
    var message = that.data.message; 
    for (var i in message) { 
     if(message[i].mid == mid){ 
      if(isadd){ 
       message[i].zan = parseInt(message[i].zan) + 1 
      }else{ 
       message[i].zan = parseInt(message[i].zan) - 1 
      } 
       
     } 
    } 
    that.setData({ 
     message: message 
    }) 
   } 
  })

重点注意代码:

(1)要把所有已经点过赞的留言id给存储到本地缓存之中,这样如果重复点赞的,就可以判断出来,并取消点赞,取消点赞的同时要去掉缓存中的id;
(2)新增点赞和取消点赞用到同一个api,通过isadd=1或者isadd=0来判断是新增还是取消点赞
(3)为了不频繁去读取留言列表,可以直接调用this.data.message,并通过循环遍历改变某个留言的点赞数,然后直接重新赋值,就能动态改变点赞数!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Open and Print a Word Document
Jun 15 Javascript
IE autocomplete internet explorer's autocomplete
Jun 30 Javascript
javascript下数值型比较难点说明
Jun 07 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
JSONP之我见
Mar 24 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
浅析bootstrap原理及优缺点
Mar 19 Javascript
vue实现商城购物车功能
Nov 27 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
React如何解决fetch跨域请求时session失效问题
Nov 02 #Javascript
element ui table 增加筛选的方法示例
Nov 02 #Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 #Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 #Javascript
如何使用vuex实现兄弟组件通信
Nov 02 #Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 #Javascript
vue头部导航动态点击处理方法
Nov 02 #Javascript
You might like
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
JavaScript中this详解
2015/09/01 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
Linux CentOS7下安装python3 的方法
2018/01/21 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
公务员保密承诺书
2014/03/27 职场文书
仓库文员岗位职责
2014/04/06 职场文书
投标承诺函范文
2015/01/21 职场文书
水知道答案观后感
2015/06/08 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js