JS实现答题卡功能_jQuery在线答题插件
2017-06-20 13:27:45  By: dwtedx

分享一款jQuery仿牛客网的在线答题的Demo、Demo带有进度条提示、是一款带进度条和时间的在线答题代码、并且时间是可以暂停和开始的、非常灵活、但个人感觉唯一的不好就是不是响应式的、不支持移动设备

js实现答题卡功能


实现计时器

/*实现计时器*/
var time = setInterval(function () {
    if (timeState) {
        if (HH == 24) HH = 0;
        str = "";
        if (  ss == 60) {
            if (  mm == 60) { HH  ; mm = 0; }
            ss = 0;
        }
        str  = HH < 10 ? "0"   HH : HH;
        str  = ":";
        str  = mm < 10 ? "0"   mm : mm;
        str  = ":";
        str  = ss < 10 ? "0"   ss : ss;
        $(".time").text(str);
    } else {
        $(".time").text(str);
    }
}, 1000);


展示考卷信息

//展示考卷信息
function showQuestion(id){
    $(".questioned").text(id 1);
    questioned = (id 1)/questions.length
    if(activeQuestion!=undefined){
        $("#ques" activeQuestion).removeClass("question_id").addClass("active_question_id");
    }
    activeQuestion = id;
    $(".question").find(".question_info").remove();
    var question = questions[id];
    $(".question_title").html("<strong>第 " (id 1) " 题 、</strong>" question.questionTitle);
    var items = question.questionItems.split(";");
    var item="";
    for(var i=0;i<items.length;i  ){
        item ="<li class=´question_info´ onclick=´clickTrim(this)´ id=´item"
                 i "´><input type=´radio´ name=´item´ value=´" itemList[i] "´>&nbsp;" itemList[i] "." items[i] "</li>";
        $(".question").append(item);
    }
    $(".question").attr("id","question" id);
    $("#ques" id).removeClass("active_question_id").addClass("question_id");
    for(var i=0;i<checkQues.length;i  ){
        if(checkQues[i].id==id){
            $("#" checkQues[i].item).find("input").prop("checked","checked");
            $("#" checkQues[i].item).addClass("clickTrim");
            $("#ques" activeQuestion).removeClass("question_id").addClass("clickQue");
        }
    }
    progress();
}


答题卡
/*答题卡*/
function answerCard(){
    $(".question_sum").text(questions.length);
    for(var i=0;i<questions.length;i  ){
        var questionId ="<li id=´ques" i "´onclick=´saveQuestionState(" i ")´ class=´questionId´>" (i 1) "</li>";
        $("#answerCard ul").append(questionId);
    }
}


选中考题

/*选中考题*/
var Question;
function clickTrim(source){
    var id = source.id;
    $("#" id).find("input").prop("checked","checked");
    $("#" id).addClass("clickTrim");
    $("#ques" activeQuestion).removeClass("question_id").addClass("clickQue");
    var ques =0;
    for(var i=0;i<checkQues.length;i  ){
       if( checkQues[i].id==activeQuestion&&checkQues[i].item!=id){
           ques = checkQues[i].id;
           checkQues[i].item = id;//获取当前考题的选项ID
           checkQues[i].answer =$("#" id).find("input[name=item]:checked").val();//获取当前考题的选项值
       }
    }
    if(checkQues.length==0||Question!=activeQuestion&&activeQuestion!=ques){
        var check ={};
        check.id=activeQuestion;//获取当前考题的编号
        check.item = id;//获取当前考题的选项ID
        check.answer =$("#" id).find("input[name=item]:checked").val();//获取当前考题的选项值
        checkQues.push(check);
    }
    $(".question_info").each(function(){
        var otherId =$(this).attr("id");
        if(otherId!=id){
            $("#" otherId).find("input").prop("checked",false);
            $("#" otherId).removeClass("clickTrim");
        }
    })
    Question = activeQuestion;
}


设置进度条

/*设置进度条*/
function progress(){
    var prog = ($(".active_question_id").length 1)/questions.length;
    var pro = $(".progress").parent().width() * prog;
    $(".progres").text((prog*100).toString().substr(0,5) "%")
    $(".progress").animate({
        width: pro,
        opacity: 0.5
    }, 1000);
}


保存考题状态 已做答的状态
/*保存考题状态 已做答的状态*/
function saveQuestionState(clickId){
    showQuestion(clickId)
}


相关事件

$(function(){
    $(".middle-top-left").width($(".middle-top").width()-$(".middle-top-right").width())
    $(".progress-left").width($(".middle-top-left").width()-200);
    progress();
    answerCard();
    showQuestion(0);
    /*alert(QuestionJosn.length);*/
    /*实现进度条信息加载的动画*/
    var str = ´´;
    /*开启或者停止时间*/
    $(".time-stop").click(function () {
        timeState = false;
        $(this).hide();
        $(".time-start").show();
    });
    $(".time-start").click(function () {
        timeState = true;
        $(this).hide();
        $(".time-stop").show();
    });

    /*收藏按钮的切换*/
    $("#unHeart").click(function(){
        $(this).hide();
        $("#heart").show();
    })
    $("#heart").click(function(){
        $(this).hide();
        $("#unHeart").show();
    })

    /*答题卡的切换*/
    $("#openCard").click(function(){
        $("#closeCard").show();
        $("#answerCard").slideDown();
        $(this).hide();
    })
    $("#closeCard").click(function(){
        $("#openCard").show();
        $("#answerCard").slideUp();
        $(this).hide();
    })

    //提交试卷
    $("#submitQuestions").click(function(){
        /*alert(JSON.stringify(checkQues));*/
        alert("已做答:" ($(".clickQue").length) "道题,还有" (questions.length-($(".clickQue").length)) "道题未完成");
    })
    //进入下一题
    $("#nextQuestion").click(function(){
        if((activeQuestion 1)!=questions.length) showQuestion(activeQuestion 1);
        showQuestion(activeQuestion)
    })
})


js实现答题功能实例源代码下载链接: js实现答题卡功能 密码: 64u4

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+