html:

<div id="fiveStars">
<div>到场时间:<img v-for="(star,index) in stars.list" :src="star.src" @click="rating(index, stars)" /></div> // index,下标 stars 总的图片
</div>

引入图片路径:

//黑星星的路径
const starOff ='../../../static/img/wjx-old.png';
//亮星星的路径
const starOn='../../../static/img/wjx-new.png';

data:设置

stars: {
list: [
{src: starOff, active: false}, // src: 图片星星,默认灰色, active,添加
{src: starOff, active: false},
{src: starOff, active: false},
{src: starOff, active: false},
{src: starOff, active: false},
],
starNum:0 // 点击星星的次数
},

 

methods:

rating(index, stars){
let total = stars.list.length;//星星总数
let idx = index + 1//代表应该显示的星星的数量
if(stars.starNum ==0){ //只点了一个星星
stars.starNum =idx
for(var i=0;i<idx;i++){
stars.list[i].src=starOn;
stars.list[i].active=true;
}
}else{
//如果再次点击当前选中的星级-仅取消掉当前星级,保留之前的。
if(idx == stars.starNum){
for(var i=idx;i<total;i++){
stars.list[i].src=starOff;
stars.list[i].active=false;
}
}
//如果小于当前最高星级,则直接保留当前星级
if(idx <stars.starNum){
for(var i=idx;i<stars.starNum;i++){
stars.list[i].src=starOff;
stars.list[i].active=false;
}
}
//如果大于当前星级,则直接选到该星级
if(idx > stars.starNum){
for(var i=0;i<idx;i++){
stars.list[i].src=starOn;
stars.list[i].active=true;
}
}
let count =0;//当前几颗星
for(var i=0;i<total;i++){
if(stars.list[i].active){
count++;
}
}
stars.starNum =count;
console.log(stars.starNum)
}
},

原生js星星评分源码的更多相关文章

  1. 从发布订阅模式入手读懂Node.js的EventEmitter源码

    前面一篇文章setTimeout和setImmediate到底谁先执行,本文让你彻底理解Event Loop详细讲解了浏览器和Node.js的异步API及其底层原理Event Loop.本文会讲一下不 ...

  2. PureMVC(JS版)源码解析:总结

    PureMVC源码中设计到的11个类已经全部解析完了,回首想想,花了一周的时间做的这点事情还是挺值得的,自己的文字组织表达能力和对pureMVC的理解也在写博客的过程中得到了些提升.我也是第一次写系列 ...

  3. PureMVC(JS版)源码解析

    PureMVC(JS版)源码解析:总结   PureMVC源码中设计到的11个类已经全部解析完了,回首想想,花了一周的时间做的这点事情还是挺值得的,自己的文字组织表达能力和对pureMVC的理解也在写 ...

  4. Vue.js 2.0源码解析之前端渲染篇

    一.前言 Vue.js框架是目前比较火的MVVM框架之一,简单易上手的学习曲线,友好的官方文档,配套的构建工具,让Vue.js在2016大放异彩,大有赶超React之势.前不久Vue.js 2.0正式 ...

  5. vue系列---snabbdom.js使用及源码分析(九)

    一:什么是snabbdom? 在学习Vue或React中,我们了解最多的就是虚拟DOM,虚拟DOM可以看作是一颗模拟了DOM的Javascript树,主要是通过vnode实现一个无状态的组件,当组件状 ...

  6. 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址

    转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度 ...

  7. PureMVC(JS版)源码解析(二):Notification类

    上篇博客,我们已经就PureMVC的设计模式进行的分析,这篇博文主要分析Notification(消息)类的实现. 通过Notification的构造函数可以看出,PureMVC中的Notificat ...

  8. 【示例代码】HTML+JS 画图板源码分享

    一个有趣的画图板, 用了 HTML5中的本地存储.下载.canvas 等技术,这个项目中用到了canvas 的很多基础功能,初学者可以学习一下 . 建议开发童鞋使用统一开发环境UDE来进行查看.调试. ...

  9. 深入理解 Node.js 中 EventEmitter源码分析(3.0.0版本)

    events模块对外提供了一个 EventEmitter 对象,即:events.EventEmitter. EventEmitter 是NodeJS的核心模块events中的类,用于对NodeJS中 ...

随机推荐

  1. Python3下安装Scrapy

    在windows下安装Scrapy的错误挺多的, 我将我安装成功的步骤发出来,供更多的人参考. 首先,直接进入Scrapy网站的文档Installation guide下的 Installing Sc ...

  2. 【目录】sql server 进阶篇系列

    随笔分类 - sql server 进阶篇系列 sql server 下载安装标记 摘要: SQL Server 2017 的各版本和支持的功能 https://docs.microsoft.com/ ...

  3. C# .NET 和.NET Framework区别

    一,C#简介 1>C#是一种面向对象的.运行于.NET Framework之上的高级程序设计语言. 2>C# 是一种简洁.类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET F ...

  4. Educational Codeforces Round 33 D. Credit Card

    Credit Card time limit per test2 seconds memory limit per test256 megabytes Recenlty Luba got a cred ...

  5. WordPress 页面点击显不同颜色爱心

    在主题的页脚添加以下js即可实现 <script type="text/javascript"> /* * https://www.xianjieo.cn */ !fu ...

  6. AtCoder Beginner Contest 130 F Minimum Bounding Box 三分法求极值(WA)

    题意:给n个点的起始坐标以及他们的行走方向,每一单位时间每个点往它的方向移动一单位.问最小能包围所有点的矩形. 解法:看到题目求极值,想了想好像可以用三分法求极值,虽然我也不能证明面积是个单峰函数. ...

  7. 选择恐惧症的福音!教你认清MVC,MVP和MVVM(转:示例挺好,不太赞同画图)

    转自:http://zjutkz.net/2016/04/13/%E9%80%89%E6%8B%A9%E6%81%90%E6%83%A7%E7%97%87%E7%9A%84%E7%A6%8F%E9%9 ...

  8. docker 安装 jenkins 笔记

    前提: 已安装好 docker-ce,可运行 docker 命令 命令: sudo docker pull jenkins mkdir -p ~/dockers/jenkins cd ~/docker ...

  9. find和grep技巧

    1. find ./ -name "*streaming*"  查找文件 2.  grep -r KUBE_LOGTOSTDERR /etc/kubernetes/*  查找内容

  10. Spring Boot和Spring Cloud学习资源推荐

    Spring Boot和Spring Cloud学习资源推荐   比较好的学习资源,分享一下. 1.Spring Boot官方文档:http://projects.spring.io/spring-b ...