zoukankan      html  css  js  c++  java
  • 微信小程序评分功能(一)

    很多做过电商项目的朋友会经常用到评分的功能,我这里正好写了一个例子,发出来分享一下:

    我写的是5分满分制的,首先,准备3个图片,

    像这样的,分别代表分数为0,0.5,1 时的状态。

    效果图:(以3.5为例)

    然后上代码:

    js:

    function pingfenxing(pingfen){
         var that=this,
      //这里是图片的路径,自己需要改 data
    ={ ling:"img/pingfen0.png", zheng:"img/pingfen2.png", ban:"img/pingfen1.png"
        }, nums=[];//这里是返回图片排列的顺序的数组,这里要注意在页面使用的时候图片的路径,不过使用网络图片无所谓
        
    if((pingfen/0.5)%2==0){//如果评分为整数,如4.0、5.0 for(var i=0;i<5;i++){ if(i<pingfen){ nums.push(data.zheng); }else{ nums.push(data.ling); } } }else{//评分不为整数,如3.5、2.5 for(var i=0;i<5;i++){ if(i<pingfen-0.5){ nums.push(data.zheng);//先把整数分离出来,如:3.5,这里就是先把3分离出来,把代表1的图片放进去 }else if(i==(pingfen-0.5)){ nums.push(data.ban);//把小数的部分分离出来,如:3.5里的0.5,把代表0.5的图片放进去 }else{ nums.push(data.ling);//然后剩下的就是没有满的用代表0的图片放进去,如:3.5,里面放进去了3个代表1的图片,然后放入了1个代表0.5的图片,最后还剩一个图片的位置,这时候就放代表0的图片 } } } return num;
    }
    module.exports
    = {
       pingfen:pingfenxing
    }

    WXML代码:

    <view class="pingfen">
         <block wx:for="{{item.pingfenpic}}" wx:key="{{item.id}}" wx:for-item="pingfen">
               <image class="img" src="{{pingfen}}"></image>
         </block>
         <text data-pingfen="{{item.pingfen}}" style="font-size:28rpx;float:left;margin-left:30rpx;">{{item.pingfen}}</text>
    </view>

    使用这个功能的页面的JS代码,这里我是通过在后台获取的评分值,然后把值用图片代表,将图片的排列路径保存起来,然后页面渲染的时候调用这个变量就可以实现这个功能。

    var pingxin=require("../../utils/pingxing.js");
    Page({
      data:{
        tuangou:tuangou
    }
    //我这里是在页面加载的时候先从后台获取数据,把数据的值赋值给tuangou,然后遍历将数据里面的参数拿出来,然后再把相应的评分中的图片排列顺序放到这条数据中的pingfenpic中保存,然后在页面中渲染即可
    onLoad:function(options){ console.log('onLoad'); var that=this; // 页面初始化 options为页面跳转所带来的参数 wx.request({ url: 'https://wxapp.com/tuangou',//这里是你请求数据的接口地址,自己填写 data: {}, method: 'GET', success: function(res){ // success console.log(res.data.tuangou); let tuangou=res.data.tuangou; for(let i=0;i<tuangou.length;i++){ tuangou[i].pingfenpic=pingxin.pingfen(parseFloat(tuangou[i].pingfen));//使用函数将评分变为图片排列的数组,这里要注意,如果评分传过来的是字符串 需要将它变为数字 } that.setData({ tuangou:tuangou }); console.log(that.data.tuangou); }, fail: function() { // fail }, complete: function() { // complete } });
      }
    });
     

    如果你仅仅想先看一下例子,那么使用这个功能的页面的JS这么写(上面的WXML中的item.pingxinpic变为pingxinpic、供引用的JS不变):

    var pingxin=require("../../utils/pingxing.js");
    Page({
      data:{
        tuangou:tuangou,
        pingxinpic:null }
    //我这里是在页面加载的时候先从后台获取数据,把数据的值赋值给tuangou,然后遍历将数据里面的参数拿出来,然后再把相应的评分中的图片排列顺序放到这条数据中的pingfenpic中保存,然后在页面中渲染即可 onLoad:function(options){ console.log('onLoad'); var that=this;
       var pingxinpic=
    pingxin.pingfen(2.5);//输入你想试验的数字  

        that.setData({
          pingxinpic=pingxinpic
        })
    ;  
      
      }
    });

    若需要10分满分制的,可以根据这个例子改

    完结。。。

  • 相关阅读:
    持续交付11-构建和部署的脚本化
    腾讯云即时通讯IM 公共整合
    腾讯云应用生成 UserSig
    「USACO 2020 US Open Platinum」Exercise
    async要点
    jQuery实现textarea高度根据内容自适应
    背景图片设置透明度而不改变内容
    input type=file实现图片上传,预览以及图片删除
    vant 字体图标不显示问题
    vue项目使用mock.js
  • 原文地址:https://www.cnblogs.com/xjwy/p/6667410.html
Copyright © 2011-2022 走看看