JavaScript

超轻量级php框架startmvc

微信小程序实现多选功能

更新时间:2020-08-03 18:48:01 作者:startmvc
本文为大家分享了微信小程序实现多选功能的具体代码,供大家参考,具体内容如下代码:

本文为大家分享了微信小程序实现多选功能的具体代码,供大家参考,具体内容如下

代码:


<!--hotblood_gongkao/pages/answer/answer.wxml-->
<!-- content -->
<view class='answer-list'>
 <view class='answer-child'>
 <text class='answer-title'><text style='margin-right:28rpx;'>{{num + 1}}/{{quesyion.length}}</text>{{question[num][0]}}</text>
 <view class='answer-options'>
 <view class="options {{selectIndex[0].sureid?'select':''}}" data-index='{{idx}}1' data-text='A' bindtap="{{whether?'':'selectAnswer'}}">
 <image class="dui {{selectIndex[0].sureid?'dui2':''}}" src='../../images/icon-dui.png' />
 <text><text style='margin-right:36rpx;'> A </text>{{question[num][1]}}</text>
 </view>
 <view class="options {{selectIndex[1].sureid?'select':''}}" data-index='{{idx}}2' data-text='B' bindtap="{{whether?'':'selectAnswer'}}">
 <image class="dui {{selectIndex[1].sureid?'dui2':''}}" src='../../images/icon-dui.png' />
 <text><text style='margin-right:36rpx;'> B </text>{{question[num][2]}}</text>
 </view>
 <view class="options {{selectIndex[2].sureid?'select':''}}" data-index='{{idx}}3' data-text='C' bindtap="{{whether?'':'selectAnswer'}}">
 <image class="dui {{selectIndex[2].sureid?'dui2':''}}" src='../../images/icon-dui.png' />
 <text><text style='margin-right:36rpx;'> C </text>{{question[num][3]}}</text>
 </view>
 <view class="options {{selectIndex[3].sureid?'select':''}}" data-index='{{idx}}4' data-text='D' bindtap="{{whether?'':'selectAnswer'}}">
 <image class="dui {{selectIndex[3].sureid?'dui2':''}}" src='../../images/icon-dui.png' />
 <text><text style='margin-right:36rpx;'> D </text>{{question[num][4]}}</text>
 </view>
 </view>
 </view>
 <view class="answer {{isWan?'isShow':'isHide'}}">
 <text>正确答案{{question[num][3]}}</text>
 </view>
 <view class="subBtn {{isque?'isShow':'isHide'}}" bindtap='confirm'>
 <text>确定</text>
 </view>
 <view class="subBtn {{isOne?'isHide':'isShow'}}" bindtap='next'>
 <text>{{con}}</text>
 </view>
 <view class="subBtn {{iswancheng?'isShow':'isHide'}}" bindtap='submit'>
 <text>提交答卷</text>
 </view>
</view>

CSS: 


/* hotblood_gongkao/pages/answer/answer.wxss */
 
/* title */
.titleImg{
 width: 734rpx;
 height: 45rpx;
 position: fixed;
 top: 0;
 display: flex;
 flex-direction: row;
 align-items: center;
 left: 50%;
 background: #fbfbfb;
 margin-left: -367rpx;
 z-index: 10;
}
.titleImg image{
 height: 35rpx;
 width: 100%;
}
/* end */
page{
 height: 100%;
 width: 100%;
 background: #fbfbfb;
}
.isHide{
 display: none;
}
.isShow{
 display: block;
}
.title{
 font-size: 34rpx;
 color: #a6a6a6;
 margin: 69rpx 0 0 0;
 display: flex;
 flex-direction: column;
 justify-content: center;
 align-items: center;
}
.answer-list{
 
}
.answer-child{
 width: 672rpx;
 margin: 0 auto;
 background: #fff;
 border-radius: 20rpx;
 padding-top:34rpx; 
 margin-bottom: 20rpx;
 margin-top: 72rpx;
 box-sizing: border-box;
 box-shadow: 0 0 4rpx #dcdcdc;
}
.answer-title{
 font-size: 32rpx;
 margin: 0 0 0 52rpx;
}
.answer-options{
 display: flex;
 flex-direction: column;
 width: 642rpx;
 margin: 32rpx auto 0 auto;
}
.options{
 width: 100%;
 height: 72rpx;
 line-height: 72rpx;
 font-size: 32rpx;
 padding-left: 30rpx;
 box-sizing: border-box;
 margin-bottom: 4rpx;
 position: relative;
 border: 2rpx solid #fff;
 
}
.dui{
 position: absolute;
 height: 41rpx;
 width: 59rpx;
 top:50%;
 margin-top: -20rpx;
 right: 16rpx;
 display: none;
}
.dui2{
 display: block!important;
}
.select{
 border: 2rpx solid #4ab07e;
 box-sizing: border-box;
 
}
.submit{
 height: 120rpx;
 width: 100%;
 background: #4ab07e;
 color: #fff;
 font-size: 34rpx;
 line-height: 120rpx;
 text-align: center;
 position: fixed;
 left: 0;
 bottom: 0;
}
/* 正确答案 */
.answer{
 width: 100%;
 text-align: center;
 color: #ff122f;
 font-size: 34rpx;
 font-weight: bold;
 margin-top: 64rpx;
}
 
/* end */
/* 下一题 */
.subBtn{
 width: 304rpx;
 height: 86rpx;
 background: #4ab07e;
 color: #fff;
 font-size: 34rpx;
 text-align: center;
 line-height: 86rpx;
 border-radius: 20rpx;
 margin: 190rpx auto 0 auto;
}

js:


// hotblood_gongkao/pages/answer/answer.js
const app = getApp();
Page({
 
 /**
 * 页面的初始数据
 */
 data: {
 question: [
 ["今天是个好日子", "halou word", "java", "javascript", 'c#'],
 ["今天是个好日子", "halou word", "java", "javascript", 'c#'],
 ], //题库
 index: 0, //选择的索引
 wrong: [], //错误
 border: '',
 num: 0,
 con: '下一题',
 isOne: true,
 isWan: false,
 iswancheng: false,
 isque: false,
 whether: false,
 correct: [], //正确
 duiList: 0, //答对的个数
 cuoList: 0, //答错的个数
 selectIndex: [{
 sureid: false
 },
 {
 sureid: false
 },
 {
 sureid: false
 },
 {
 sureid: false
 },
 ],
 },
 
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function(options) {
 this.setData({
 
 })
 },
 
 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function() {
 
 },
 // 提交答卷
 submit: function(e) {
 console.log(this.data.duiList);
 console.log(this.data.cuoList);
 var num = this.data.num; //当前题目下标
 var question = this.data.question; //题库
 var duiList = this.data.duiList; //答对多少题
 var cuoList = this.data.cuoList; //答错多少题
 //获得题目对象的长度
 var arr = Object.keys(question);
 var len = arr.length;
 if ((num + 1) == len) {
 var grade = (100 / len) * duiList;
 console.log(grade);
 wx.redirectTo({
 url: '../chengjiu/chengjiu?grade=' + grade,
 })
 }
 },
 // 确认选择
 confirm: function() {
 var num = this.data.num;
 var question = this.data.question; //题库
 //获得题目对象的长度
 var arr = Object.keys(question);
 var len = arr.length;
 if ((num + 1) == len) {
 this.setData({
 iswancheng: true,
 isOne: true,
 isWan: true,
 isque: false
 })
 } else {
 this.setData({
 isOne: false,
 whether: true,
 isque: false,
 isWan: true
 })
 }
 
 },
 // 下一题
 next: function() {
 var num = this.data.num; //当前题目下标
 this.setData({
 num: num + 1,
 isOne: true,
 isWan: false,
 whether: false,
 index: 0
 })
 },
 // 选择答案
 selectAnswer: function(e) {
 console.log(e);
 var index1 = e.currentTarget.dataset.index - 1; //当前点击元素的自定义数据,这个很关键
 var selectIndex = this.data.selectIndex; //取到data里的selectIndex
 selectIndex[index1].sureid = !selectIndex[index1].sureid; //点击就赋相反的值
 console.log(selectIndex[index1])
 this.setData({
 selectIndex: selectIndex //将已改变属性的json数组更新
 })
 console.log(this.data.selectIndex.in_array(true))
 if (selectIndex.in_array(true) == false) {
 this.setData({
 isque: false
 })
 } else {
 var question = this.data.question; //题库
 var num = this.data.num; //当前题目下标
 var text = e.currentTarget.dataset.text; //选择的答案
 var duiList = this.data.duiList; //答对多少题
 var cuoList = this.data.cuoList; //答错多少题
 
 //获得题目对象的长度
 var arr = Object.keys(question);
 var len = arr.length;
 //当前答题为最后一题
 if ((num + 1) == len) {
 //判断选择的答案和正确答案是否一致
 if (text == question[num][3]) {
 duiList = duiList + 1;
 this.setData({
 duiList: duiList,
 isque: true
 })
 } else {
 cuoList = cuoList + 1;
 this.setData({
 cuoList: cuoList,
 isque: true
 })
 }
 } else {
 //判断选择的答案和正确答案是否一致
 if (text == question[num][3]) {
 duiList = duiList + 1;
 this.setData({
 duiList: duiList,
 isque: true
 })
 } else {
 cuoList = cuoList + 1;
 this.setData({
 cuoList: cuoList,
 isque: true
 })
 }
 }
 }
 
 
 },
 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function() {
 this.question();
 },
 
 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function() {
 
 },
 
 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function() {
 
 },
 
 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function() {
 
 },
 
 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function() {
 
 },
 
 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function() {
 
 }
})
Array.prototype.in_array = function(element) {
 for (var i = 0; i < this.length; i++) {
 if (this[i].sureid == element) {
 return true;
 }
 }
 return false;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

微信小程序 多选