<script>
			var all_title = [];//题库
			var currIndex=1;
			var chooseArr=[];
			var num = {
				data:[]
			};
			var endStatus=false;
			var score=0;
			var id = localStorage.getItem('userid');
			var pro_num = localStorage.getItem('pro_num');
			var arr = pro_num.split('|'); // 将字符串按照|分割成数组
			var nums = arr.split('-'); // 将每个数组元素按照-分割成数组
			var pro_id = nums[0]; // 题库
		
		$(function(){
			var pro_name=decodeURI(GetString('pro_name'));
			var type=decodeURI(GetString('type'));
			$('#type').html(type);
			$('#pro_name').html(pro_name);
			$('#name').html(userName);
			$('#testNum').html('00109521882');
		
			//题目数量框
			for (var i = 1; i <= 100; i++) {
				num.data.push({
					num:i
				});
			}
			var numhtml = template('titleNumtpl', num);
			$('#titleNum').html(numhtml);
		
			var timetoatl = 3600;
			var time=setInterval(function(){
				timetoatl--;
				formatSeconds(timetoatl);
				if(timetoatl==0){
					clearInterval(time);
					layer.msg('考试时间结束!', {
						icon: 5
					},function(){
						calcScore();
					});
				}
			},1000)
		
			//题库
			getData('test.php',{
				action:'list',
				token:token,
				id:pro_name
			},function(r){
				all_title=r.data;
				setTitle(1);
			})
			//结束
			$('#endBtn').click(function(){
				layer.confirm('确认提交本次考试结果?', function (index) {
					clearInterval(time);
					calcScore();
					getData('/php/question.php ', {
						pro_id:pro_id,
						id:id,
						score:score,
						title:all_title,
						answer: chooseArr, // 补充答案参数
					}, function (r) {
						
					})
				});	
			})
		})
		// 单独的题目变化方法
		function setTitle(i) {
			if(i<1 || i>100){
				layer.msg('请输入正确的题号', {
					icon: 5
				});
				return false; // 阻止后续代码执行
			}
			var titleone=all_title[parseInt(i)-1];
			var type=titleone['testType'];
			var title=titleone['title'];
			var yesStr=titleone['answer'];
			var testImgAddr=titleone['testImgAddr'].indexOf('/')>=0?titleone['testImgAddr'].split('/')[titleone['testImgAddr'].split('/').length-1]:titleone['testImgAddr'];
			var arr=titleone.choose.split('|');
			var choose={
				testIndex:i,
				title:title,
				testType:type,
				testImgAddr:testImgAddr?'/img/'+testImgAddr:'',
				yesStr:yesStr,
				endStatus:endStatus,
				info:[]
			}
			let havechoose=chooseArr.find((val)=>val.num==i);
			$.each(arr,function(n,val){
				if(val){
					let checked=false;
					if(havechoose)checked=havechoose.choose.find((x)=>x==n);
					let shooseimg=val.indexOf('{')>=0?val.split('{')[1].split('}')[0]:'';
					choose.info.push({
						'title':val,
						'checked':checked,
						'endStatus':endStatus,
						'img':shooseimg?'/img/'+shooseimg:'',
					})
				}
			})
			var html = template('detail', choose);
			$('#question').html(html);
			//改变题目的颜色
			$('#'+i).addClass('current').siblings().removeClass('current');
			currIndex=i;
			if(i==1){
				$('button.first').attr('disabled',true);
				$('button.end').attr('disabled',false);
			}else if(i==100){
				$('button.first').attr('disabled',false);
				$('button.end').attr('disabled',true);
			}else{
				$('button.first').attr('disabled',false);
				$('button.end').attr('disabled',false);
			}
			
			//监听选择项
			$('input[name=answer]').change(function(){
				var answer=[];
				$.each($('input[name=answer]:checked'),function(n,val){
					answer.push($(val).val());
				})
				let havechoose=false;
				let choosear = chooseArr.find((val)=>val.num==i);
				if(choosear){
					havechoose=true;
					choosear.choose=answer;
				}
				if(!havechoose){
					chooseArr.push({
						num:i,
						choose:answer,
						yesStr:yesStr
					})
				}
				$('#'+i).addClass('yestitle');
			})
		}
		//计算成绩
		function calcScore(){
		
			var text='';
			$.each(num.data,function(n,val){
				val.color='red';
				let titleChoose=chooseArr.find((x)=>x.num==val.num);
				let choose='';
				if(titleChoose){
					$.each(titleChoose.choose,function(x,y){
						switch (y){
							case 0:choose+='A';break;
							case 1:choose+='B';break;
							case 2:choose+='C';break;
							case 3:choose+='D';break;
							case 4:choose+='E';break;
							case 5:choose+='F';break;
							case 6:choose+='G';break;
						}
					})
					if(choose==titleChoose.yesStr){
						score++;
						val.color='green';
						return score;
					}
				}
			})
		
			endStatus=true;
			$('label').css('pointer-events','none');
			$('input').attr('readonly',true);
			$('.yesanswer').show();
		
			layer.open({
				title: '考试结束',
				content: '本次成绩:'+score+'<br/>考试成绩:'+(score>59?'合格':'不合格')
				,btn: ['查看考试结果','返回首页']
				,yes: function(index, layero){
					var numhtml = template('titleNumtpl', num);
					$('#titleNum').html(numhtml);
					layer.close(index); 
				}
				,btn2: function(index, layero){
					location.href='index.html';
				}
			});
		}
		//上下题
		function changeTitle(type){
			if(type=='prev'){
				setTitle(currIndex-1);
			}else{
				setTitle(currIndex+1);
			}
		}
		//倒计时
		function formatSeconds(value) {
			let second = parseInt(value);
			let minute = 0;
			let hour = 0;
			//  let day = 0;
			//  如果秒数大于60,将秒数转换成整数
			if (second > 60) {
				//  获取分钟,除以60取整数,得到整数分钟
				minute = parseInt(second / 60)
				//  获取秒数,秒数取佘,得到整数秒数
				second = parseInt(second % 60)
				//  如果分钟大于60,将分钟转换成小时
				if (minute > 60) {
					//  获取小时,获取分钟除以60,得到整数小时
					hour = parseInt(minute / 60)
					//  获取小时后取佘的分,获取分钟除以60取佘的分
					minute = parseInt(minute % 60)
					//  如果小时大于24,将小时转换成天
					//  if (hour > 23) {
					//    //  获取天数,获取小时除以24,得到整天数
					//    day = parseInt(hour / 24)
					//    //  获取天数后取余的小时,获取小时除以24取余的小时
					//    hour = parseInt(hour % 24)
					//  }
				}
			}
			let result = '' + parseInt(second) + '秒'
			if (minute > 0)result = '' + parseInt(minute) + '分' + result;
			if (hour > 0)result = '' + parseInt(hour) + '小时' + result;
			//  if (day > 0) { result = '' + parseInt(day) + '天' + result;
			$('#surplusTime').html(result);
		}

        </script>
JavaScript 代码问题分析及优化

原文地址: https://www.cveoy.top/t/topic/mj2o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录