如何利用JS制作上传图片并可选择的功能
Admin 2022-08-09 群英技术资讯 526 次浏览
需求:实现微信发送图片或发朋友圈选择图片功能 可实现选后点击后 选择图片标记值自减或自增
最终效果:
思路:
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了事件冒泡、事件捕获和事件委托,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
this 关键字是 JavaScript 中最复杂的机制之一。它是一个很特别的关键字,被自动定义在所有函数的作用域中。但是即使是非常有经验的 JavaScript 开发者也很难说清它到底指向什么。
JavaScript如何实现一维数组变三维数组?一些朋友对怎么将一维数组转为三维数组比较好奇,其实在JavaScript中实现这个需求比不难,接下来小编就通过一个示例给大家介绍一个实现方法,感兴趣的朋友就继续往下看吧。
目录前言:函数提升var变量提升let const提升Class提升前言:JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们。就好像是变量声明和函数声明被提升了代码的顶部一样。sayHi() // Hi there!function sayHi() { console.log(Hi there
本篇文章带大家深度理解Node中的事件循环,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008