今天記錄一下簡單的投票系統,主要實現選中至少五張作品,並提交投票。
思路:選中作品,將作品id存入到數組里。 取消投票,則從數組中移除該作品id。
如圖效果:
<li v-for="(opu,index) in opus"> <router-link :to="{ name: 'voteDetail', params: { id: opu.id }}" :id="opu.id"> <div class="opus-img"> <img v-bind:src="opu.thumb" alt=""> <span class="num-select"> {{opu.votes}}票 </span> </div> <div class="author clearfix"> <ul> <li style="text-align:left;">{{opu.xingming}}</li> <li style="color:#5eb95e;font-size:14px;">{{opu.bianhao}}號</li> <li style="text-align:right;">{{opu.nianling}}</li> </ul> </div> </router-link> <div v-bind:class="{btnSelectauthod:isInArray(resultgroup,opu.id)}" class="nobtn-select-authod" @click="postSupport(opu.id)"><span v-if="!isInArray(resultgroup,opu.id)">{{textconfirm}}</span><span v-else>{{notextconfirm}}</span></div> </li>
// 判斷數組是否有某個元素
isInArray(arr,value){ for(var i = 0; i < arr.length; i++){ if(value === arr[i]){ return true; } } return false; },
//選擇作品投票按鈕 postSupport(num){ this.group.push(num); this.resultgroup = []; var hash = {}; for (var i = 0, elem; (elem = this.group[i]) != null; i++) { // 排除重復元素 if (!hash[elem]) { this.resultgroup.push(elem); hash[elem] = true; }else{ // 清除指定元素 Array.prototype.removeByValue = function(val) { for(var i=0; i<this.length; i++) { if(this[i] == val) { this.splice(i, 1); break; } } } this.resultgroup.removeByValue(elem); hash[elem] = false; } }
// console.log(this.isInArray(this.resultgroup,'9529')) 是否存在9529 window.sessionStorage.setItem('resultgroup',JSON.stringify(this.resultgroup)) // console.log(sessionStorage.getItem('resultgroup')) },