Vue成绩案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能

一、成绩案例

  • ✅✅✅通过本次案例实现添加、删除、显示无数据、添加日期、总分均分以及数据本地化等功能。
    在这里插入图片描述
  • 准备成绩案例模板,我们需要在这些模板上面进行功能操作。
<template><div class="score-case"><div class="table"><table><thead><tr><th>编号</th><th>科目</th><th>成绩</th><th>考试时间</th><th>操作</th></tr></thead><tbody><tr v-for="(item,i) in list" :key="item.id"><td>{{ i+1 }}</td><td>{{ item.subject }}</td><td class="red">{{ item.score }}</td><td>{{ item.date }}</td><td><a href="#">删除</a></td></tr></tbody><!-- <tbody ><tr><td colspan="5"><span class="none">暂无数据</span></td></tr></tbody> --><tfoot><tr><td colspan="5"><span>总分:321</span><span style="margin-left:50px">平均分:80.25</span></td></tr></tfoot></table></div><div class="form"><div class="form-item"><div class="label">科目:</div><div class="input"><input type="text" placeholder="请输入科目" /></div></div><div class="form-item"><div class="label">分数:</div><div class="input"><input type="text" placeholder="请输入分数" /></div></div><div class="form-item"><div class="label"></div><div class="input"><button class="submit" >添加</button></div></div></div></div>
</template><script>
export default {name: 'ScoreCase',data () {return {list: [{id: 15, subject: '语文', score: 89, date: new Date('2022/06/07 10:00:00')},{id: 27, subject: '数学', score: 100, date: new Date('2022/06/07 15:00:00')},{id: 32, subject: '英语', score: 56, date: new Date('2022/06/08 10:00:00')},{id: 41, subject: '物理', score: 76, date: new Date('2022/06/08 10:00:00')}],subject: '',score: ''}}
};
</script><style lang="less">
.score-case {width: 1000px;margin: 50px auto;display: flex;.table {flex: 4;table {width: 100%;border-spacing: 0;border-top: 1px solid #ccc;border-left: 1px solid #ccc;th {background: #f5f5f5;}tr:hover td {background: #f5f5f5;}td,th {border-bottom: 1px solid #ccc;border-right: 1px solid #ccc;text-align: center;padding: 10px;&.red {color: red;}}}.none {height: 100px;line-height: 100px;color: #999;}}.form {flex: 1;padding: 20px;.form-item {display: flex;margin-bottom: 20px;align-items: center;}.form-item .label {width: 60px;text-align: right;font-size: 14px;}.form-item .input {flex: 1;}.form-item input,.form-item select {appearance: none;outline: none;border: 1px solid #ccc;width: 200px;height: 40px;box-sizing: border-box;padding: 10px;color: #666;}.form-item input::placeholder {color: #666;}.form-item .cancel,.form-item .submit {appearance: none;outline: none;border: 1px solid #ccc;border-radius: 4px;padding: 4px 10px;margin-right: 10px;font-size: 12px;background: #ccc;}.form-item .submit {border-color: #069;background: #069;color: #fff;}}
}
</style>

(一)💬💬💬增加功能

  • 🍻🍻🍻添加添加思路:
    ①、获取科目 和 分数
    ②、给添加按钮注册点击事件
    ③、给list数组添加一个对象
    ④、重置表单数据
<div class="form"><div class="form-item"><div class="label">科目:</div><div class="input"><!--2.点击后,用户输入的信息拿得到!v-model="subject" data里面有数据 --><input type="text" placeholder="请输入科目" v-model="subject"/></div></div><div class="form-item"><div class="label">分数:</div><div class="input"><!--2.点击后,用户输入的信息拿得到!v-model.number="score" data里面有数据 --><input type="text" placeholder="请输入分数" v-model.number="score"/></div></div><div class="form-item"><div class="label"></div><div class="input"><!--1.用户点按钮,注册事件@click="add" --><button class="submit" @click="add">添加</button></div></div>
</div><script>
export default {methods:{//  2.点击后,用户输入的信息拿得到!v-model="变量" data里面有数据add(){console.log(this.subject,this.score);if(this.score=="" || this.subject==""){alert("输入不能为空");return;}// 3.数据拿到后,准备下进入list数组内// 进入之前,变成和list数组内其他成员一样模样let one = {id:Math.random(),subject:this.subject,score:this.score,date:new Date()};this.list.push(one);//点击后清空输入框this.subject="";this.score="";}}
};
</script>

在这里插入图片描述

(二)💬💬💬删除

  • 💪findIndex方法常用来查找数组中满足条件的第一项元素的下标。
  • 💪==先判断类型,再判断值 ===如果类型不同,直接false
  • 💪array.splice(start, deleteCount, item1, item2, …);用于删除数组中的元素。它可以修改原始数组,并返回从数组中删除的元素。
    ①、start:指定开始删除的索引位置。
    ②、deleteCount:指定要删除的元素个数。
    ③、item1, item2, …:可选参数,要插入到数组中的新元素。
<tbody><tr v-for="(item,i) in list" :key="item.id"><td>{{ i+1 }}</td><td>{{ item.subject }}</td><td class="red">{{ item.score }}</td><td>{{ item.date }}</td><!--1.用户点删除,注册事件@click="add" --><td><a href="#" @click="del(item.id)">删除</a></td></tr>
</tbody><script>
export default {methods:{del(id){//找对应的下标:把数组遍历下,看哪个成员的id==点击这个id,那么该成员下标就是对应下标!// ==先判断类型,再判断值// ===如果类型不同,直接false// findIndex方法常用来查找数组中满足条件的第一项元素的下标// let i = this.list.findIndex(item=>item.id==id);let i;this.list.forEach((item,index)=>{if(item.id==id){i = index;//找到对应下标}});// 4. 数组删除该成员this.list.splice(i,1);}}
};
</script>

在这里插入图片描述

(三)💬💬💬显示暂无数据

<!-- <tbody v-if="list.length===0"> -->
<tbody v-if="!list.length"><tr><td colspan="5"><span class="none">暂无数据</span></td></tr>
</tbody>
<tfoot v-else><tr><td colspan="5"><span>总分:321</span><span style="margin-left:50px">平均分:80.25</span></td></tr>
</tfoot>

在这里插入图片描述

(四)💬💬💬添加日期

  • 🍕安装moment
npm i moment
  • 🍕引入moment
import moment from "moment";//把下载包从node_modules找到包
  • 🍕定义格式化的函数
<tbody><tr v-for="(item,i) in list" :key="item.id"><td>{{ i+1 }}</td><td>{{ item.subject }}</td><td class="red">{{ item.score }}</td><td>{{ time(item.date) }}</td>//👈👈👈👈👈👈<td><a href="#" @click="del(id)">删除</a></td></tr>
</tbody><script>
import moment from "moment";//把下载包从node_modules找到包箭头。👈👈👈
export default{methods:{//时间处理://1.JS函数方法:moment(xxx).format('YYYY-MM-DD HH:mm:ss')//2.代码只能写在某个作用域范围内!//3.moment(?):不能写死专门处理某个时间字符串,要处理每一个字符串//注意:{{变量、表达式、自己下面定义函数(实参)}}time(str){return moment(str).format('YYYY-MM-DD HH:mm:ss');//处理完成}}};
</script>

在这里插入图片描述

(五)💬💬💬总分均分

  • 🍕分数的求和 reduce
  • JavaScript中的reduce()方法是数组的一个高阶函数,它可以对数组中的每个元素进行迭代,并将它们汇总成一个值。
  • 🍕reduce()方法接收一个回调函数作为参数,这个回调函数可以接受四个参数:accumulator(累加器)、currentValue(当前值)、currentIndex(当前索引)和array(原始数组)。
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);console.log(sum); // 输出:15
  • 🍕reduce()方法从数组numbers中求和。初始累加器的值为0,回调函数中的累加器accumulator表示当前的总和,currentValue表示数组中的当前元素。在每一次迭代中,回调函数将累加器与当前元素相加,并返回新的累加器的值。最终,reduce()方法返回的就是累加结果。
<tfoot v-else><tr><td colspan="5"><span>总分:{{ zf }}</span><span style="margin-left:50px">平均分:{{junf}}</span></td></tr>
</tfoot><script>
export default {name: 'ScoreCase',data () {computed:{zf(){//分数的求和 reducereturn this.list.reduce((sum,item)=>{return sum+=item.score;},0);//分数的求和 reduce//return this.list.reduce((sum,item)=>sum+=item.score,0);},junf(){return this.zf/this.list.length;}}
};
</script>

(六)💬💬💬数据本地化

  • 🍕在add()和del()方法里面的最后一行写入代码
// 存入本地
localStorage.setItem("list",JSON.stringify(this.list));

在这里插入图片描述
在这里插入图片描述

  • 🍕但是上述情况,一点击刷新浏览器,数据还是没有改变,还是初始值。那么我们就需要将list进行本地获取。
data () {return {list: JSON.parse(localStorage.getItem("list")),//为了让add拿到数据subject: '',score: ''}},
  • 🍕但是要是本地list没有数据,那么页面就会报错,不会显示。那么我们还需要加一个[]
list: JSON.parse(localStorage.getItem("list")) || [],

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx基础3——配置文件详解(实用功能篇)

文章目录 一、平滑升级二、修饰符2.1 无修饰符效果2.2 精准匹配&#xff08;&#xff09;2.3 区分大小写匹配&#xff08;~&#xff09;2.4 不区分大小写匹配&#xff08;~*&#xff09;2.5 匹配优先级 三、访问控制四、用户认证五、配置https六、开启状态界面七、rewrite重写u…

matplotlib 3D

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np# 创建一个三维坐标轴 fig plt.figure() ax fig.add_subplot(221, projection3d) xx fig.add_subplot(222) yy fig.add_subplot(223) xy fig.add_subplot(224)# 生成示例数据…

关于你欠缺的NoSQL中的redis和mongoDB

文章目录 前言一、在string list hash结构中&#xff0c;每个至少完成5个命令&#xff0c;包含插入 修改 删除 查询&#xff0c;list 和hash还需要增加遍历的操作命令1、STRING类型2、List类型数据的命令操作&#xff1a;3、举例说明list和hash的应用场景&#xff0c;每个至少一…

echarts图例对齐

富文本不生效&#xff0c;是没有设置lineHeight

企业内部FAQ系统的搭建重要性是什么?

企业内部FAQ系统&#xff08;Frequently Asked Questions&#xff0c;常见问题解答系统&#xff09;的搭建对于企业来说具有重要的意义。它可以帮助企业有效地管理和解决员工和客户的常见问题&#xff0c;提高工作效率和服务质量。 企业内部FAQ系统搭建的重要性&#xff1a; …

Python批量实现Word、EXCLE、PPT转PDF文件

一、绪论背景 在日常办公和文档处理中&#xff0c;有时我们需要将多个Word文档、Excel表格或PPT演示文稿转换为PDF文件。将文档转换为PDF格式的好处是它可以保留文档的布局和格式&#xff0c;并且可以在不同平台上进行方便的查看和共享。 本篇博文将介绍如何使用Python编程语言…

lua脚本语言学习笔记

Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本&#xff0c;这篇文章就介绍一下lua脚本语言的基础用…

旅行社优惠卡app软件开发

旅游行业的不断发展&#xff0c;越来越多的旅行社开始推出各种优惠卡来吸引游客。而随着智能手机的普及&#xff0c;开发一款旅行社优惠卡APP软件成为了一种必然的趋势。 该软件的主要功能是提供旅行社的各种优惠卡信息&#xff0c;包括优惠卡的种类、价格、使用范围、有效…

Pytorch如何打印与Keras的model.summary()类似的输出

1 Keras的model.summary() 2 Pytorch实现 2.1 安装torchsummary包 pip install torchsummary2.2 代码 import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summaryclass Net(nn.Module):def __init__(self):super(Net, self).__…

【Spring Boot学习一】创建项目 Spring Boot的配置文件

目录 一、安装插件 二、创建Spring Boot项目 1、创建项目 1.1 使用IDEA创建 1.2 网页版本创建 2、项目目录介绍与运行 三、Sping Boot的配置文件&#xff08;重点&#xff09; &#x1f337;1、.properties配置文件 &#xff08;1&#xff09;基础语法&#xff1a;Key …

我在VScode学Java类与对象(Java显式参数和隐式参数、静态方法+main方法、Java访问修饰符、static关键字、Java的包、对象数组)第三辑

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客&#xff1a;《我在VScode学Java》 续《我在VScode学Java&#xff08;Java的类与对象&#xff09;》 方法会操作对象并访问他们的实例字段。 伍._. 显式参…

elementUI el-radio 无法点击的问题

<el-form-item label"B端客户类型" prop"user_type"><template slot"label"><span>B端客户类型</span><el-tooltip effect"dark" placement"top" content"B端大客户账期有效,只有设置该类型…

javascript实现久久乘法口诀表、document、write、console、log

文章目录 正序乘法口诀表倒序乘法口诀表logconsoledocumentwrite 正序乘法口诀表 function multiplicationTable() {for (let i 1; i < 9; i) {let val ;for (let j 1; j < i; j) {document.write(j * i (i * j) &nbsp );val ${j}*${i}${i * j} ;}consol…

Vue第三篇:最简单的vue购物车示例

本文参考&#xff1a;Vue Cli&#xff08;脚手架&#xff09;实现购物车小案例 - - php中文网博客 效果图&#xff1a; 编写流程&#xff1a; 1、首先通过vue/cli创建工程 vue create totalprice 2、改写App.vue代码如下&#xff1a; <template><div><div v…

深入浅出对话系统——基于预训练语言模型的对话管理

引言 主要讲解三篇论文&#xff0c;主要思想是把自然语言理解、对话管理和自然语言生成三部分整合到一起。 先导知识 数据集 CamRest676MultiWOZ 都是用的自回归语言模型 causalGPT-2、Transformer Decoder 一个概念&#xff1a;delexicalization 通过相应的占位符替换…

基于IMX6ULL的AP3216C的QT动态数据曲线图显示

前言&#xff1a;本文为手把手教学 LinuxQT 的典型基础项目 AP3216C 的数据折线图显示&#xff0c;项目使用正点原子的 IMX6ULL 阿尔法( Cortex-A7 系列)开发板。项目需要实现 AP3216C 在 Linux 系统下的驱动&#xff0c;使用 QT 设计 AP3216C 的数据显示页面作为项目的应用层。…

websocket发布到iis之后无法创建连接访问

在做websocket测试时在本地的服务可以正常访问&#xff0c;在调试成功之后发布到了iis中&#xff0c;发现无法连接&#xff0c;这时可能有以下几个原因。 WebSocket无法连接到IIS&#xff1a; IIS版本不支持WebSocket&#xff1a;IIS 8.0及更高版本才支持WebSocket&#xff0…

从小白到大神之路之学习运维第61天--------Ansible自动化运维工具(playbook配置文件深入了解)

第三阶段基础 时 间&#xff1a;2023年7月14日 参加人&#xff1a;全班人员 内 容&#xff1a; playbook配置文件 目录 playbook配置文件 一、playbook配置文件概念 修改hosts文件 建立playbook配置文件 yml脚本写法注释&#xff1a; 二、Playbook的核心元素 三、…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎&#xff0c;只要输入“中小企业数字化转型”&#xff0c;关于痛点、难处的文章就会铺面而来&#xff0c;难在哪里&#xff0c;其实很好解答&#xff0c;关键在于&#xff0c;如何解决这一个个难处。 PS&#xff1a;给大家整理了一份完整版的《中小企业如…

汽车供应链专场对接会 | 8月25日大会同期活动

爱普搜汽车供应链对接会&#xff0c;是根据采购商的项目需求&#xff0c;有针对性地组织全国各地采购商与供应商&#xff0c;进行面对面交流与沟通&#xff0c;促成实质性交易。参会群体为汽车行业制造型企业、主机厂、Tier1/2。 供应商在参加对接会前已做足功课&#xff0c;现…