读书人

求1个JS多选题的做法有高手没请帮

发布时间: 2013-01-23 10:44:49 作者: rapoo

求1个JS多选题的做法,有高手没,请帮解决下,里面有俺的思路
比如多择题答案是A,B

当值是A的时候,弹出窗口50分

如果是A,B的时候弹出窗口100分

当是A,C的时候弹出窗口是0分

比如多择题答案是A,B,C

当值是A,C的时候,弹出窗口50分
当值是C的时候,弹出窗口50分

如果是A,B,C的时候弹出窗口100分

当是A,D的时候弹出窗口是0分


function aa()
{
var tt=A,B;//测试答案tt
var mm=A,B,D;//系统答案
//下面写处理方法

alert("");//显示分数

}

我目前的想法是如果完全一致100分
如果不一致,进行拆分,循环判断单个,如果里面的单个都存在答案里,则显示50分
如果里面有1个不存在,显示0分,
不知道JS怎么写

初次学JS,请高手帮忙
[解决办法]

引用:
比如多择题答案是A,B

当值是A的时候,弹出窗口50分

如果是A,B的时候弹出窗口100分

当是A,C的时候弹出窗口是0分

比如多择题答案是A,B,C

当值是A,C的时候,弹出窗口50分
当值是C的时候,弹出窗口50分

如果是A,B,C的时候弹出窗口100分

当是A,D的时候弹出窗口是0分


function aa()
……

试试吧,差不多可以满足要求

function isInRightAnswer(str,rightAnswer)
{
return rightAnswer.join().indexOf(str)==-1? false:true;
}
function getScore(answer,rightAnswer,fullScore)
{
for(var count=0;count<answer.length;count++)
{
if(!isInRightAnswer(answer[count], rightAnswer))
{
return 0;
}
}
return fullScore*(answer.length==rightAnswer.length? 1:0.5);
}
console.log(getScore(['a','c'],['a','b','c'],100));
console.log(getScore(['a','c'],['a','b','d'],100));
console.log(getScore(['a','b','c'],['a','b','c'],100));

[解决办法]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
var a=[];
var x=0;
function setAnswear(){
var answear=document.getElementById("test").value.toLowerCase();
answear=answear.replace(/^\s+/,"").replace(/\s+$/,"");
answear=answear.split(/\W+/);
x=answear.length;
a=[];
for(var i in answear){
a[answear[i]]=1;
}
document.getElementById("aa").innerHTML=answear;
document.getElementById("test").value="";
}
function getScore(){
var b=true;
var l=0;
var ax=document.getElementsByName("checks");
for(var i=0;i<ax.length;i++){
if(ax[i].checked){
if(a[ax[i].value]!=1){
b=false;
break;
}else{
l++;
}
}
}
if(!b){
alert(0);
}else if(l!=x){
alert(50);
}else{
alert(100);
}
}
</script>
</head>

<body>
<input type="checkbox" name="checks" value="a">a<br/>
<input type="checkbox" name="checks" value="b">b<br/>
<input type="checkbox" name="checks" value="c">c<br/>
<input type="checkbox" name="checks" value="d">d<br/>
<input type="button" value="提交" onclick="getScore()">
<input type="text" id="test"><input type="button" value="设置正确答案" onclick="setAnswear()">
<div id="aa"></div>
</body>
</html>


[解决办法]


<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/JavaScript">
//每次点击测试按钮后需刷新页面重新开始,否则会出现错误(本题正确答案A,B)
$(function(){
var a="A,B";
var b=a.split(",");
var j=0,k=0;
$("#abv").click(function(){
$(":checkbox").each(function(){
if(this.checked){
k++;
for(var i=0;i<b.length;i++){
if($(this).attr("value")==b[i]){
j++;
}
}
}
});
if(j==b.length && j==k){
alert(100+"分");
}else{
if(j==0 && k==0){
alert("没有选择选项");
}else{
if(j==k){
alert(50+"分");
}else{
alert(0+"分");
}
}
}

});
})
</script>
<input type="button" id="abv" value="测试用按钮" />
<div id="div1">
<input type="checkbox" id="checkbox1" value="A" />A
<input type="checkbox" id="checkbox2" value="B" />B
<input type="checkbox" id="checkbox3" value="C" />C
<input type="checkbox" id="checkbox4" value="D" />D
</div>

[解决办法]
function aa(){

//var tt=A,B;//测试答案tt
//var mm=A,B,D;//系统答案

var tt=new Array("A","B");
var mm=["A","B","D"];
//tt.sort();
//mm.sort();
//下面写处理方法

var ttLen=tt.length;
var mmLen=mm.length;

var result=0;

if(mmLen>=ttLen)
{
var j=0;//下次查找的开始位置

for(var i=0;i<ttLen;i++){
if((j=mm.indexOf(tt[i],j)+1)<1){ break;}
}

if(i==ttLen){
if(i==mmLen){
result=100;
}
else {
result=50;
}
}

}
alert(result);//显示分数

}

aa();

读书人网 >JavaScript

热点推荐