JS实现答题上一题下一题

以下是实现效果图

这里写图片描述

JS块代码

 var TRUE_COUNT = 0//正确的题数
        var count = 10;
        //当前所在题数
        var thisURL = document.URL;
        var getval = thisURL.split('?')[1];
        var titleType = getval.split("=")[1];
        //获取题目type
        var class_radio = "selection";
        //选择按钮
        var urlPath = url() + "findProblemBank.do?type=" + titleType;
        var urlPath1 = url() + "checkAnswer.do" ;
var showProblem = function(urlPath, urlPath1, titleType) {
    $.ajax({
        type : "POST",
        url : urlPath,
        contentType : "application/x-www-form-urlencoded; charset=utf-8",
        success : function(data) {
            var str = '{"ProblemBank":' + data + "}"
            result = eval("(" + str + ")")
            var impl = new judge({
                el : '.textButton',
                data : result,
                render : function(index, data,answer) {
                    //如果完成答题后返回查询答案
                    if(index>1){

                        $.ajax({
                            type : "POST",
                            url : urlPath1,
                            data:{
                                answer:JSON.stringify(answer)
                            },
                            dataType:'json',
                            contentType : "application/x-www-form-urlencoded; charset=utf-8",
                            success : function (data) {

                            }
                        });
                    }
                    if("1"==data.ProblemBank[index].answerType){
                        document.getElementById("typeof").innerHTML ="(单选题)"
                    }else if("2"==data.ProblemBank[index].answerType){
                        document.getElementById("typeof").innerHTML ="(多选题)"

                    }
                    document.getElementById("type").innerHTML = index+1+"/10"
                    var class_radio = document.getElementsByClassName("selection");
                    document.getElementById("title").innerHTML = data.ProblemBank[index].problemTitle;
                    class_radio[0].nextElementSibling.innerHTML = data.ProblemBank[index].a;
                    class_radio[1].nextElementSibling.innerHTML = data.ProblemBank[index].b;
                    class_radio[2].nextElementSibling.innerHTML = data.ProblemBank[index].c;
                    class_radio[3].nextElementSibling.innerHTML = data.ProblemBank[index].d;
                    for(var i = 0; i < class_radio.length ; i++){
                        class_radio[i].checked = false;
                    } 

                },
                checked : function() {
                    var answerStr = "";
                    var class_radio = document.getElementsByClassName("selection");
                    // var jsonLength = result.ProblemBank.length//json数组的长度
                    for (var i = 0; i < class_radio.length; i++) {
                        var a = ["A", "B", "C", "D"];
                        if (class_radio[i].checked) {
                            answerStr += a[i];
                        } 
                    }
                    return answerStr;
                }
            });
        },
        error : function() {
            alert("服务器开小差啦!");
        }
    });
}
//判断上一题,下一题
var judge = function(obj) {
    this.data = obj.data;
    var index = '';
    var node = '';
    var answer = [];
    var _this = this;

    function bindOnclick(node, func, render, checked) {
        node.onclick = function() {
            var option = checked();
            answer[index] = option;
            func();
            render(index, _this.data,answer);
        };
    }

    function initNode(el) {
        node = document.querySelectorAll(el);
    }
    function init() {
        console.log(answer);
        index = 0;
        initNode(obj.el);
        bindOnclick(node[0], function(){index--},obj.render, obj.checked);
        bindOnclick(node[1], function(){index++},obj.render, obj.checked);
        obj.render(index, _this.data);
    }
    this.getAnswers = function() {
        return this.answer;
    };
    init();
}

HTML主要代码

 <scan id="typeof"></scan>
            <scan id="id" ></scan>
            <br />
            <scan id="title"></scan>
            <br />

            <input class="selection "  type = "checkbox" id = "A" name="selection"  />
            <label for="A"><scan id="A"></scan></label>
            <br/>


            <input class="selection" type = "checkbox" id = "B" name="selection" />
            <label for="B"><scan id="B"></scan></label>
            <br/>

            <input class="selection" type = "checkbox" id = "C" name="selection" />
            <label for="C"><scan id="C"></scan></label>
            <br/>

            <input class="selection" type = "checkbox" id = "D" name="selection" />
            <label for="D"><scan id="D"></scan></label>
            <br/>

        </div>
        <div id="select" name="choose">
        <div style="float:left" class="btnr ub ub-ac bc-text-head ub-pc bc-btn uc-a1 textButton"   id="forward"  >
            上一题
        </div>
        <div style="float:right" class="btnr ub ub-ac bc-text-head ub-pc bc-btn uc-a1 textButton"   id="next" >
            下一题
        </div>
        </div>
  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JS答题程序一页一题是指在一个页面中只显示一道目,而不是将所有目都显示出来。这种方式可以使得用户集中注意力回答当前的目,而不会被其他目干扰。 实现这样的效果可以通过以下步骤: 第一步,准备目数据。可以将目的内容、选项、答案等信息存储在一个数组或对象中。 第二步,使用JS来动态生成目页面。可以使用DOM操作,在页面上创建问容器、选项容器和提交按钮等元素。 第三步,编写JS代码,实现分页效果。可以通过设定一个变量来表示当前目的索引,然后根据索引值从目数据中获取当前目的信息,并将其渲染到页面上。 第四步,监听用户的操作。可以为选项按钮添加点击事件监听器,当用户选择了一个选项时,记录用户的选择。可以使用全局变量或数组来保存用户的答案。 第五步,判断答案的正确性。可以在用户提交答案时,从目数据中获取正确答案,并与用户的选择进行比较。可以使用条件语句来判断用户的答案是否正确,并显示相应的提示信息。 第六步,根据用户的选择,更新目页面。可以在用户提交答案后,根据用户的答案的正确与否,更新页面上的提示信息,并将下一道目的内容渲染到页面上。 以上就是使用JS实现答题程序一页一题的基本流程。通过这种方式,用户可以专注于回答当前的目,提高答题效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值