打卡学习Vue第四天!!!

综合成绩案例实现效果:

<!--渲染功能:

            1.v-if+v-else:对tbody完成条件渲染;

            2.v-for:对列表完成渲染;

            3.:class:对分数完成渲染

        -->


            <tbody v-if="list.length > 0">
                <tr v-for="(item,index) in list" :key="item.id" align="center">
                    <td>{{ index + 1 }}</td>
                    <td>{{ item.subject }}</td>
                    <!--成绩不及格,需标红-->
                    <td :class="{red: item.score < 60}">{{ item.score }}</td>
                    <!--删除功能:
                        注册点击事件->传递id->基于id去过滤掉相同的项
                    -->
                    <td><a href="#" @click="del(item.id)">删除</a></td>
                </tr>
            </tbody>
            <tbody v-else>
                <tr>
                    <td colspan="5" align="center">
                        <span class="none">暂无数据</span>
                    </td>
                </tr>
            </tbody>

            <tfoot>
                <tr>
                    <td colspan="4" align="center">
                        总分:<span><strong>{{ totalCount }}</strong></span>
                        平均分:<span><strong>{{ averageSCore }}</strong></span>
                    </td>
                </tr>
            </tfoot>
        </table>
        科目:<input type="text" placeholder="请输入科目名称" v-model.trim="subject"><br>
        分数:<input type="text" placeholder="请输入分数" v-model.number="score"><br>
        <button @click="add">添加</button>

具体实现方法功能(完整代码):

methods: {
            del(id){
                this.list=this.list.filter(item => item.id !=id)
            },
            add(){
                //判断是否输入正确格式
                if(!this.subject){
                    alert('请输入科目')
                    return
                }
                if(typeof this.score !== 'number'){
                    alert('请输入正确的成绩')
                }
                //添加
                this.list.unshift({//往前面加;往后面加push
                    id: +new Date(),
                    subject: this.subject,
                    score: this.score
                })
                //输完后清空
                this.subject = ''
                this.score = ''
            }
        },
        computed: {
            totalCount(){
                //求和
                let total=this.list.reduce((sum,item) => sum + item.score,0)
                return total
            },
            averageSCore(){
                //判断数据是否为空
                if(this.list.length === 0){
                    return 0
                }
                //求平均数,保留两位小数
                return (this.totalCount / this.list.length).toFixed(2)
            }
        }

*判断输入的内容是否为空

//判断是否输入正确格式
                if(!this.subject){
                    alert('请输入科目')
                    return
                }
                if(typeof this.score !== 'number'){
                    alert('请输入正确的成绩')
                }

*判断输入的数据是否为空?

//判断数据是否为空
                if(this.list.length === 0){
                    return 0
                }

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值