如何比较每个输入文本和选择控制数组的相同索引的值?
var qtype_array = new Array();
$('select[name="qtype[]"]').each(function(){
qtype_array.push($(this).val());
});
var true_ans_array = new Array();
$('input[name="true_ans[]"]').each(function(){
true_ans_array.push($(this).val().toUpperCase());
});
阵列内容:
qtype_array - ["MULTIPLE", "SINGLE","DESC"]
true_ans_array - ["AC", "A", ""]
我想检查如果在索引0的qtype_array中,如果文本是“MULTIPLE”,则在true_ans_array的同一索引0处,文本应至少为2个字符,如果qtype_array中的文本为“SINGLE”,则为文本长度同一索引的true_ans_array中的内容应为1,如果在qtype_array中,如果文本为“DESC”,则true_ans_array中的文本内容长度应为0.
我正在开发一个在线考试系统。
我非常困难,无法想到解决方案......
答案 0 :(得分:0)
请参阅此fiddle,以下是解释:
假设您已从页面收集了所有信息,您应该已经使用数据填充了qtype_array
和true_ans_array
数组。
像这样:
var true_ans_array = new Array();
$("input[name='true_ans[]']").each(function(){
true_ans_array.push(this.value);
});
var qtype_array = new Array();
$('select[name="qtype[]"]').each(function(){
qtype_array.push($(this).val());
});
现在两个数组都包含其中的元素。 接下来是要经历所有元素。我假设两个数组都有相同数量的元素。
for (i=0; i < qtype_array.length; i++) {
switch (qtype_array[i]) {
case "MULTIPLE": if (true_ans_array[i].length >= 2)
{alert("it's >= than 2")}
break;
case "SINGLE": if (true_ans_array[i].length == 1)
{alert("it's == to 1")}
break;
case "DESC": if (true_ans_array[i].length == 0)
{alert("it's == to 0")}
break;
default: alert("neither Multiple, Single or Desc");
}
}
答案 1 :(得分:0)
您可以同时遍历两个数组,检查它们是否具有您在每个位置所期望的值。
只是检查两个数组是否具有相同的大小以及每个位置的值is a string。 null.length
会抛出错误。
for ( var i = 0; i < qtype_array.length; i++ ) {
var q = qtype_array[i];
var a = true_ans_array[i];
switch ( q ) {
case "MULTIPLE":
if ( a.length < 2 ) {
alert('q == "MULTIPLE" but a.length < 2');
}
break;
case "SINGLE":
if ( a.length != 1 ) {
alert('q == "SINGLE" but a.length != 1');
}
break;
case "DESC":
if ( a.length > 0 ) {
alert('q == "DESC" but a.length > 0');
}
break;
default:
alert('q != "MULTIPLE", "SINGLE" and "DESC"');
break;
}
}