本文实例为大家分享了微信小程序实现答题功能的具体代码,供大家参考,具体内容如下
viewjs// pages/index2/index2.js const app = getApp()//打错的题目放到erroroption let erroroption=[]Page({data: {shuju: [],curret: 1, //第几题nums: '', //题库题目的总数量isSelect: false,subject: null,scoreFen: 2, //定义每道单选题的分值percent: 0, //进度条数量计算userSelect: '', //用户选择的题目个数score: 0, //用户答对的题目数量curt: '', //如果用户有选择就更新进度条zongfen: -1, //用户的总分btndis: false, //最后一题checked停止totalerrow: 0 ,//用户答错题的个数suiji:'00',suiji1:"00",jifen:0,},back(){wx.navigateBack({delta: 0,})},onLoad: function (options) {wx.removeStorageSync('daui') var that = this;wx.request({url: 'XXXXXXXX?page=1&rows=10', //题目接口data: {
},header: {'content-type': 'application/json' // 默认值},success(res) {that.setData({//shuju:JSON.stringify(res.data.data.rows) shuju: res.data.data.rows,subject: res.data.data.rows[that.data.curret - 1],nums: res.data.data.rows.length})
}})},checkboxChange(e) {this.setData({userSelect: e.detail.value})},submit() {wx.setStorageSync('leng1', this.data.shuju.length)//1.获取用户选项,并判空let userSelect = this.data.userSelect;if (!userSelect || userSelect < 1) {wx.showToast({icon: 'none',title: '您还没有选择答案!',}) return}
//随机数答题var random = Math.floor(Math.random() * 10);this.setData({suiji: random})// console.log("出现的随机数",this.data.suiji)
//2.如果用户有选择就更新进度条let curt = this.data.curret; //2//进度条this.setData({percent: (curt / this.data.shuju.length * 100).toFixed(2),})//判断所选择的答案是否在正确答案中let daan = this.data.subject.answer_choices;let a = []daan.forEach(item => {a.push(item.content)}) console.log("正确答案是:", a) let leng = daan.length;console.log("多选题选择了", userSelect)//选择答案的个数和长度let daan2 = userSelect;let leng2 = daan2.length;//3.判断用户是否答对if(a.sort().toString()==daan2.sort().toString()){let score = this.data.score+1;// console.log("答对了:",score) this.setData({score:score})}else{//4.记录用户答错的题,帮用户查漏补缺let subjectNon = this.data.subject;subjectNon.userSelect = userSelect;//将用户答错的题放到常量erroroption erroroption.push(subjectNon)// console.log("错题",erroroption)}//判断是否答题结束4 if(curt+1>this.data.shuju.length){//5.在用户答完最后一道题的时候对用户进行打分let userScore = this.data.score;let scoreFen = this.data.scoreFen;this.setData({zongfen:scoreFen*userScore,totalerrow:erroroption.length}) wx.showToast({icon:'none',title: '已经是最后一题了!',}) this.setData({btndis:true})//数据缓存wx.setStorageSync('errodat', erroroption)
//数据读取let name = wx.getStorageSync('xingming');let phone = wx.getStorageSync('phone');let daui = wx.getStorageSync('daui');let chang = this.data.shuju.length;var that = this if(daui/chang*100>=80){let num = this.data.jifen let jifen = num+4 console.log("加4分") console.log(jifen)
that.setData({jifen:jifen})}else if(daui/chang*100>=60){let num = this.data.jifen console.log("加2分") let jifen = num+2 console.log(jifen) that.setData({jifen:jifen})}else if(daui/chang*100<60){let num = this.data.jifen console.log("不加分") let jifen = num+1 console.log(jifen) that.setData({jifen:jifen})}let integral = this.data.jifen;wx.setStorageSync('integral', integral) console.log(name) console.log(phone) console.log(integral)//向后端提交数据wx.request({url: 'url',header:{"Content-Type":"application/x-www-form-urlencoded"},method:"POST",data:{name:name,phone:phone,integral:integral},success:function(res){console.log(res.data) if (res.data.status == 0) {wx.showToast({title: '提交失败!!!',icon: 'loading',duration: 1500})}else{wx.showToast({title: '提交成功!!!',//这里打印出登录成功icon: 'success',duration: 1000})}},fail:function(){
}}) return}// 数据佳佳if (this.data.curret < this.data.shuju.length) {this.setData({userSelect:'',subject: this.data.shuju[this.data.suiji],curret: ++this.data.curret,isSelect:false}) console.log("题目:",this.data.subject) return}},//自定义弹框powerDrawer: function (e) {var currentStatu = e.currentTarget.dataset.statu;this.util(currentStatu)},util: function(currentStatu){/* 动画部分 */// 第1步:创建动画实例var animation = wx.createAnimation({duration: 200, //动画时长timingFunction: "linear", //线性delay: 0 //0则不延迟});// 第2步:这个动画实例赋给当前的动画实例this.animation = animation;// 第3步:执行第一组动画animation.opacity(0).rotateX(-100).step();// 第4步:导出动画对象赋给数据对象储存this.setData({animationData: animation.export()})// 第5步:设置定时器到指定时候后,执行第二组动画setTimeout(function () {// 执行第二组动画animation.opacity(1).rotateX(0).step();// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象this.setData({animationData: animation})//关闭if (currentStatu == "close") {this.setData({showModalStatus: false});}}.bind(this), 200)// 显示if (currentStatu == "open") {this.setData({showModalStatus: true});}},//查看成绩tiku(){wx.switchTab({url: '/pages/school/school',})},//6.查看错题cuoti(){//1.跳页之前存数据
//2.用全局变量的,将数据传给全局//app.globalData.globalerror = erroroption;//如果页面有tabbar,跳转就要改成 wx.switchTab()跳转wx.navigateTo({url: '/pages/errowoption/errowoption',})}})css.topnav{width: 100%;height: 160rpx;z-index: 9999;box-sizing: border-box;overflow: hidden;white-space: nowrap;position: fixed;top: 0;}.ioioi{width: 100%;height: 160rpx;}.topnav>image{width: 100%;height: 162rpx;position: absolute;z-index: -333;}.back{width: 60rpx;height: 60rpx;position: absolute;left: 10rpx;top: 80rpx;}.back>image{width: 60rpx;height: 60rpx;}.sousuo{width: 60%;height: 64rpx;position: absolute;bottom: 20rpx;border-radius: 50rpx;color: white;font-size: 30rpx;text-align: left;line-height: 64rpx;left: 96rpx;}/* asfasfasf */ page{background-color: white;}.heat{width: 100%;height: 140rpx;}.heatengo{margin: auto;width: 612rpx;height: 40rpx;background-color: #ccc;border-radius: 10rpx;margin-top: 60rpx;display: flex;justify-content: space-around;border-radius: 20rpx;}.heatengo>text{font-size: 26rpx;}.contd{height: 400rpx;width: 100%;position: relative;}.jingdutiao{width: 100%;height: 30rpx;}.jingdu{color:#29aeef;}.oik{z-index: 999;position: absolute;width: 75%;height:260rpx ;margin-left:75rpx ;margin-top: 85rpx;}.tixing{width: 100%;height: 60rpx;text-align: center;color: black;}.bottdi{width: 80%;height: auto;margin: auto;}.page-section-title{text-align: left;width: 100%;height: auto;}.timu{width: 90%;height: 70rpx;background-color: #ccc;border-radius: 20rpx;margin-top: 30rpx;line-height: 70rpx;padding: 0 25rpx;}.bottdi>button{margin-top: 60rpx;background-color: #29aeef;color: white;width: 300rpx;border-radius: 20rpx;}.page-section{width: 100%;height: 40rpx;display: flex;justify-content: space-around;}.cuowudemo{width: 100%;height: 160rpx;display: flex;justify-content: space-around;margin-top: 30rpx;}/*button*/.btn {width: 75%;padding: 20rpx 0;border-radius: 20rpx;text-align: center;margin: 40rpx 10%;background: #006ead;color: #fff;}
/*mask*/.drawer_screen {width: 100%;height: 100%;position: fixed;top: 0;left: 0;z-index: 1000;background: #000;opacity: 0.75;overflow: hidden;}
/*content*/.drawer_box {width: 650rpx;overflow: hidden;position: fixed;top: 50%;left: 0;z-index: 1001;background: #FAFAFA;margin: -150px 50rpx 0 50rpx;border-radius: 15px;}
.drawer_title{padding:15px;font: 20px "microsoft yahei";text-align: center;font-size: 30rpx;}.drawer_content {height: 210px;overflow-y: scroll; /*超出父盒子高度可滚动*/}.btn_ok{padding: 10px;font: 30rpx "microsoft yahei";text-align: center;border-top: 1px solid #E8E8EA;color: #3CC51F;}
.top{padding-top:8px;}.bottom {padding-bottom:8px;}.title {height: 30px;line-height: 30px;width: 160rpx;text-align: center;display: inline-block;font: 300 28rpx/30px "microsoft yahei";}
.input_base {border: 2rpx solid #ccc;padding-left: 10rpx;margin-right: 50rpx;}.input_h30{height: 30px;line-height: 30px;}.input_h60{height: 60px;}.input_view{font: 12px "microsoft yahei";background: #fff;color:#000;line-height: 30px;}
input {font: 12px "microsoft yahei";background: #fff;color:#000 ;}radio{margin-right: 20px;}.grid { display: -webkit-box; display: box; }.col-0 {-webkit-box-flex:0;box-flex:0;}.col-1 {-webkit-box-flex:1;box-flex:1;}.fl { float: left;}.fr { float: right;}.jieguo{width: 580rpx;height: 60rpx;display: flex;justify-content: space-around;background-color: #29aeef;line-height: 60rpx;border-radius: 20rpx;color: white;margin: auto;margin-top: 18rpx;}.jieguodibu{width: 100%;height: 240rpx;display: flex;}.code{width: 520rpx;height: 240;margin: auto;display: flex;justify-content: space-between;}.code>view{width: 230rpx;height: 200;position: relative;}.code>view>text{position: absolute;font-size: 24rpx;bottom: 14rpx;left: 50rpx;color: white;}.code>view>image{width: 192rpx;height: 189rpx;}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:JavaScript实现答题评分功能页面
