如何利用JS制作上传图片并可选择的功能
Admin 2022-08-09 群英技术资讯 280 次浏览
需求:实现微信发送图片或发朋友圈选择图片功能 可实现选后点击后 选择图片标记值自减或自增
最终效果:
思路:
1、给原始数组中增加一个用于判断是否选中的状态默认为false和选中序号值 默认为空
2、定义一个选中初始值 作为计算选中值
data() { return { initial:0, //设置选中初始值 作为最终选择几个依据 imgList:[ //初始数据 {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, ] }; },
3、点击选中/取消时 让对应的数据自增或自减
逻辑
1.判断所点击的项的选中状态
开始未选中 — 切换选中状态 – 默认初始值自增1 — 赋值给当前项
if(!item.state){ //开始未选中 //点击选中,改变当前项的选中状态 设置为true item.state = true // 选中初始值 +1 this.initial++ // 当前项赋值=设置初始值 item.serial = this.initial }```
2.选中下点击取消(状态值为true时点击)
更改选中状态 — 设置一个空值 用于接受最终几个值选中 用于更改选中初始值 — 跑循环去自减 — 判断 当前点击的选中值 和 数组中所有选中值做对比 — 数组中的选中值 大于 当前选中值 数组中大于的值自减1 – 判断数组选中状态用于统计-- 有选中则 设置控制自+1 – 给选中初始值 赋值 – 当前选中值清空
else { //选中下点击取消(状态值为true时点击) // 改变当前项选中状态为false item.state = false // 设置一个空值 用于接受最终几个值选中 用于更改选中初始值 let xuanzhong = 0 // 跑循环去自减 this.imgList.forEach((items,index) => { // items = 循环所需要的每一项 if(items.serial>item.serial){ //判断 当前点击的选中值 和 数组中所有选中值做对比 // 数组中的选中值 大于 当前选中值 数组中大于的值自减1 items.serial-- } if(items.state){//判断数组选中状态用于统计 // 有选中则 设置控制自+1 xuanzhong ++ } }) // 给选中初始值 赋值 this.initial=xuanzhong // 当前选中值清空 item.serial = '' }
完整代码
<template> <div class="app"> <div class="bgView"> <div class="bottomView"> <div class="ceshitt"> <div class="imgDiv" v-for="(item,index) in imgList" :key="index"> <img class="bgImg" src="../../assets/img/BGImg1.png" alt=""> <div :class="['selectBox',item.state ? 'selectClass' :'']" @click="selectClick(item,index)"> <p v-if="item.state">{{item.serial}}</p> </div> </div> </div> </div> </div> </div> </template> <script> export default { data() { return { initial:0, //设置选中初始值 作为最终选择几个依据 imgList:[ //初始数据 {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, {url:'',state:false,serial:'',}, ] }; }, components: {}, created() { }, mounted() { }, methods: { selectClick(item,val){ // item = 点击事件带过来整条参数 // val = 所点击的下标 // 逻辑 1、在原始数组中对象中增加2个值 --- 选中状态 默认false 选中值 默认'', // 判断所点击的项的选中状态 if(!item.state){ //开始未选中 //点击选中,改变当前项的选中状态 设置为true item.state = true // 选中初始值 +1 this.initial++ // 当前项赋值=设置初始值 item.serial = this.initial }else { //选中下点击取消(状态值为true时点击) // 改变当前项选中状态为false item.state = false // 设置一个空值 用于接受最终几个值选中 用于更改选中初始值 let xuanzhong = 0 // 跑循环去自减 this.imgList.forEach((items,index) => { // items = 循环所需要的每一项 if(items.serial>item.serial){ //判断 当前点击的选中值 和 数组中所有选中值做对比 // 数组中的选中值 大于 当前选中值 数组中大于的值自减1 items.serial-- } if(items.state){//判断数组选中状态用于统计 // 有选中则 设置控制自+1 xuanzhong ++ } }) // 给选中初始值 赋值 this.initial=xuanzhong // 当前选中值清空 item.serial = '' } }, }, }; </script> <style scoped> .ceshitt{ display: flex; width: 100%; height: 220px; flex-wrap: wrap; /* justify-content: space-between; */ } .imgDiv{ width: 30%; position: relative; margin-right: 10px; } .bgImg{ position: absolute; height: 100px; width: 100%; } .selectBox{ width: 15px; height: 15px; line-height: 15px; border-radius: 50%; text-align: center; position: absolute; top: 8px; right: 8px; z-index: 100; color:#FFF ; border: 1px solid cyan; } .selectClass{ background-color:#4cc25b ; } </style>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
javascript数组中的findIndex方法 ,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
很多人在学习JavaScript时,对于JavaScript创建对象的几种模式不是很理解,这篇文章对工厂模式,构造函数模式,原型模式这三种模式做除了详细介绍没希望对大家学习JS创建对象有所帮助。
这篇文章给大家分享的是jQuery设置修改z-index的值的方法。在jQuery中,我们可以使用css()或attr()方法来修改元素的值,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
这篇文章主要为大家详细介绍了react封装全局弹框的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要给大家介绍了关于如何一步步基于element-ui封装查询组件的相关资料,本文通过示例代码介绍的非常详细,对大家学习或者使用vue.js具有一定的参考学习价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008