答题抢红包(答题功能JS部分)

答题页面
在这里插入图片描述
一、题目信息渲染

var data="";//后台传过来的json数据
var index=0;//表示当前渲染题目的下标
 function romance(){
        $('#time-sec').text(20);//页面定时开始数
        $('#time-plan').css('width','0%');//定时进度
        /*
        根据index取出data里面的题目信息并进行拼串
        然后渲染页面
        */
     writer = '';
     var writer = (index + 1) + '/' + data.length + '(';
   
      writer += data[index].type == 1 ? '选择题' : data[index].type == 2 ? '判断题' : data[index].type == 3 ? '多选题' : '类型未知';
      writer += ') : '+data[index].title;
     $('#answer-title').html(writer);
     /*
    渲染题目里面的选项内容 
	*/
     writer = '';
     var arr = data[index].options;
     for(var i = 0; i < arr.length; i++){
          writer += '<div class="' 
          + (data[index].type == 1 || data[index].type == 2 ? 'radio' : 'checkbox')
          + '">';
          writer += '<label "><input type="'
           + (data[index].type == 1 || data[index].type == 2 ? 'radio' : 'checkbox')
          +'" value="'+arr[i].sub_number+'" name="types" ><span>';
          if(data[index].type != 2){
              var fontOption = escapes(arr[i].sub_number);
         
              writer +=  '&nbsp;' + fontOption + '&nbsp;';
          }
          writer += arr[i].question_option;
          writer += '</span></label>';
     }
     
    $('#answer-body').html(writer);
    //定时500秒后开始调用setTime周期循环定时器
    setTimeout(function(){
        setTime();
    },500)
    
 }

主要就是根据当前的index,取出data中的数据然后渲染页面。

二、定义点击下一题按钮

window.onload = function(){
     
     /*
     按钮绑定点击事件
     判断当前状态做下一步操作
     changeFlag是作为一个开关,当用户答错题changeFlag为false;此时是在页面底部显示正确的内容等等
     
     */
     $('#btn-next').click(function(){
      
         if(changeFlag){
             btnNext();
         }else{
              $('#nav-error').css('display','none');//错误弹窗隐藏
               changeFlag = true;
                if(index == data.length - 1 ){//判断当前是否是到最后一页
                 $('#btn-next').html('完成');
                 }else if(index >= data.length){
                    endAnswer();//调用输出用户答对了多少题是否可以抽奖
	            return false;
                }
                 romance();//调用渲染页面方法
         }
         if(index == data.length){//判断是否答完题
             sendAnswer();//ajax将信息发送到后台的方法,此方法根据接口写  
        }
     })
     //判断是否数据题
      if(data.length < 1){
     $('#content-answer').css('display',"none");
     $('#title-val').text('此活动没有题');
     $('.btn-lg').css('display',"none");
     }else{
      romance();
    }
 }
 

此块代码是定义按钮不同情况要执行的内容。

三、对题目信息进行判断(核心部分)

function btnNext(){
     var flag = true;
     var optionNum = new Array();//将用户选择的题添加到数组中
  /*
  jQuery获取input并进行过滤checked然后遍历并将value值push到数组中
  */
    $('input[name*="types"]:checked').each(function(){
        flag = false;
        optionNum.push(this.value);
    })
    if(flag){//如果用户没有选择对用户进行提示
           $('#change-alert').text('请选此题的答案!!!')
	       $('#myModal').modal('show');
	       return false;
    }
       clearInterval(time);//清除周期定时器
    var result = data[index].result.split(',');//取出数据中的正确答案
    var judge = function(){//对用户选择的答案进行判定
        if(result.length !== optionNum.length){//判断数组长度是否相等
            return false;
        }
        //for比对数据如果有不一致的数据返回false
        for(var i = 0; i < result.length; i++){
            flag = false;
            for(var j = 0; j < optionNum.length; j++){
                if(result[i] == optionNum[i]){
                    flag = true;
                    break;
                }
            }
            if(!flag){
                break;
                return false;
            }
        }
        if(i ==  result.length  && flag){//最后进行判断一致返回true
            return true;
        }else{
            return false;
        }
        
    }

     index += index >= data.length  ? 0 : 1;//index加一
  
/*
判断答题情况如果错误执行错误的内容

*/
   if(!judge()){
        $('#change-alert').text('回答错误!!!');//弹窗提示
	   $('#myModal').modal('show');//显示弹窗
	    var  errorStr = '';
	    $('input[name*="types"]').attr('disabled','disabled');//禁止选择输入框
	    //for遍历取出用户选择的内容与正确的内容给用户查看
	   for(var i = 0; i < optionNum.length; i++){
	       errorStr += '<p>&nbsp;&nbsp;<span>';
	      errorStr += (data[i].type != 2 ? escapes(optionNum[i]) : '' + '&nbsp;') +  data[index - 1].options[optionNum[i] - 1].question_option;
	      errorStr += '</span></p>';
	       
	   }
	   $('#you-option').html(errorStr);
	    var  errorStr = '';
	   for(var i = 0; i < result.length; i++){
	      errorStr += '<p>&nbsp;&nbsp;<span>';
	      errorStr += (data[i].type != 2 ? escapes(result[i]) : '' + '&nbsp;') +  data[index - 1].options[result[i] - 1].question_option;
	      errorStr += '</span></p>';
	   }
	   $('#my-option').html(errorStr);
	   $('#nav-error').css('display','block');//显示底部答案信息块
	   changeFlag =  false;
      
    
	       return false;
   }
   /*
   如果答案正确执行下面的代码
   */
   
        number++;//对正确的数量计算
    if(index == data.length - 1){//判断是否是最后一题
      $('#btn-next').html('完成');
    }
 
    if(index >= data.length){
         endAnswer();
	     return false;
    }
  
    romance();//调用页面渲染方法
        
 }

四、页面定时
有兴趣自己研究下,个人感觉还有优化空间不作介绍了

function setTime(){
     var timeNum = 20;
     time = setInterval(function(){
         timeNum--;
         $('#time-sec').text(timeNum);
         var plan = 100 / 20 * (20 - timeNum);
         $('#time-plan').css('width',plan+'%');
         if(timeNum < 0){
             timeNum = 20;
             index++;
             console.log(index);
             if(index == data.length){
             sendAnswer();
             endAnswer();
		       
             }else{
            romance(); 
             }
           
            clearInterval(time);
         }   
     },1000)
 }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS企业微信红包是指在企业微信中进行红包活动的行为。企业微信是基于微信平台的一款专门为企业打造的应用软件,包含了组织架构管理、通讯录、消息通知、会议管理等多种功能。 在企业微信中红包活动是一种促进团队凝聚力和员工活跃度的活动方式。通过发送红包以及其他方式(例如、抽奖等)发放红包,员工在企业微信中参与红包的过程中可以增加期待感和参与度,同时也能够加强员工之间的交流和互动。 在进行企业微信红包活动时,员工可以通过打开企业微信应用,在红包活动发布的时间和位置,点击相应的红包,即可参与红包。通常,企业微信红包是限时的,员工需要在规定的时间内参与活动,并在红包的瞬间进行操作,以便更快地争取到红包。 企业微信红包活动除了能够增加员工的积极性和参与度,还可以在特定的节日或者庆典活动中增加团队的凝聚力和向心力。通过红包活动,员工之间可以互相祝福和互动,加强距离感和友情。同时,企业也可以利用红包活动来进行员工福利和奖励的发放,提高企业文化和员工满意度。 总而言之,iOS企业微信红包是一种通过企业微信平台进行的红包活动,可以有效增加员工之间的互动、团队的凝聚力和员工的活跃度,是一种有益于企业文化和员工关系的活动方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值