最近在做一个在线答题系统,读取完题目点击下一题之后切换到第二题。
用一个变量item来取得本题的选项,但是如果题目有多道,需要用一个数组来
记录用户所有题目的答题选项,但是我不知道应该如何设计?
下面给出当前代码
var i=0;
$("#X1").append("<input type='radio' id= 'selection' name='selection' value='A' />"+"A"+"."+answerA[i]+"&nbsp;&nbsp;");//省略BCD
$("#submit").click(function(){
localStorage.setItem("key_count",id[i]);
i=localStorage.getItem("key_count");
         if(i<cnt){
var item = $("input[name='selection']:checked").val();
var c=new Array(item);
                   $("#X1").empty();
                   $("#X1").append(item+"@@@@@@@++++++@"+c+"<br/>");
        }
}
至此,我每点击下一题之后都可以看见上一题的选项,现在我需要一个变量来记录用户所有的选项
让数组内的形式变成
读出第二题,数组中的内容[A]//这里存放了用户第一题的选项
读出第三题,数组中的内容[A,B]//这里存放了用户第一题和第二题的选项
依此类推
我最初的想法是在红色字体后面定义数组
var cccArray=[i];
cccArray[i]=item;
这样 cccArray[1]为第一题用户选项,cccArray[2]为第2题用户选项
但是cccArray并不像PHP中$_SESSION那样可以长期保存,因此最后一道题
答完后cccArray=[i]中只存放了最后一道题的用户选项。这个记录一组用户答题选项的功能之前在PHP中我是用$_SESSION数组实现的,
$_SESSION['answer_opt'][$id] = $answer;
现在换成利用JQUERY实现同样的功能,有点手足无措,初识JQUERY,希望各位能给出自己的建议。

解决方案 »

  1.   

    你原来用$_SESSION存储数组或一个变量,也行。如果不是改变了方式(把所有题目一次性返回前台,而不是原来每一题做完到后台取下一题的话),也没必要非再改成前台。
      

  2.   

    如果只是为了显示,也根本不用数组,只要每次AJAX提交同时把新答的这道题答案附加到显示内容之后就行了。至于实际的答案处理,由后台完成。如果你是想用JS数组存储所有答案,最后一次性提交给后台,以减少后台SESSION的内存开销,那就很容易被作弊了。谁都知道选择题有个规律,C的机率最大,其次B,D,然后A。所以人家只要执行一个booket,构造和总题目等量的C(无论是数组,还是象我说的那种字串)然后调用你的AJAX,就实现了“一步交卷”的效果,基本能蒙个四成分数吧,虽然分数不一定理想,可是相对于节省的时间来说,就很划算了。
      

  3.   

    感谢1楼的解答,就像您一楼回复的
    只要一个变量就行了,内容不断增长,“第一题答案|第二题答案”…………
    我想实现这样的功能,但是基本上每点击下一题之后
    第二题的答案会覆盖第一题的,应该把把变量如何设置才能使每次内容累加而不是替换?
    还有我并不需要显示用户的答案(上面的显示是为了测试),我只需要全部记录下来,然后去对比正确答案                  
                      var