问题描述:一个有5个选项多选题,正解只有2个,题目的分值是5分。
1、只选中一个正解,得分2分;
2、选中全部正解,得分5分;
3、选中其他选项的同时,选中任意一个错解,得分0分。
5个checkbox 。选中每一个都触发click事件!遍历全部checkbox。已经选中的集合,取得自定义属性data-score 。data-score存放你答案的分数。然后$each这个集合,将每一个的分数相加即可!大致的思路是这样的。
我说一下我对你的回答的理解,你看看对不对:
给每个选项赋值相应的分值,选中一个选项,就把它的分值累加到总分中。
可是对于多选题,应该是如果选中错解,这个题就没分了。
举个例子说明一下:假如AC是正解,那么我选AB、AD、ABD这样的带错解的选项组合都是不能得分的。
@Oooooooh: 这问题貌似有些严峻,你去了解一下笛卡尔积,排列组合的问题,需要将所有选中的答案排列出来,再进行判断得分的情况。当然你肯定不是用的AB,肯定ID组合 比方说A的ID是1,B的ID是2,那么选中AB的结果就是 1,2 。得把答案组合出来。组合的时候就该得到每个答案对应的分数。
使用checkbox,然后遍历选项,通过逻辑判断即可。
如果只有几个多选题,我还可以对每个题向下面代码描述的那样挨个进行判断:
//第二题答案 var chkValue = ""; var chkObjs = document.getElementsByName("checkbox"); for(var i=0;i<chkObjs.length;i++){ if(chkObjs[i].checked){ chkValue += chkObjs[i].value; } } if(chkValue==""){ if(confirm("第二题未解答!是否解答!")){return false;}; }else if(chkValue=="AB"){ zdf += 10; }
目前,我面临的状况是很多题目,我不能对它们挨个进行这样的判断。
我现在想到的一个方法是:
为问题的每个选项添加一个标识符,标识是正解还是错解,如果选中错解,就得0分。
用这个方法,我有点搞不懂的是,有的多选题有2个正解,有的有3个正解,如果仅选中了部分正解,这个该怎么判断、评分?
这个需要你根据分值和选项个数讨论了。做好是通过后端验证,前端给标识不太好。
用 || 和 && 判断不就好了?