关于javascript:使用Jquery比较每个数组索引的Input文本数组控件和Select选项数组控件的值

Compare values of a Input text array control and Select option array control for each array index using Jquery

如何比较这些输入文本的相同索引的值并选择控件数组?

1
2
3
4
5
6
7
8
9
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());
});

数组内容:

1
2
qtype_array - ["MULTIPLE","SINGLE","DESC"]
true_ans_array - ["AC","A",""]

我想检查,如果在索引0的qtype_数组中,如果文本是"多个",那么在真数组的同一索引0中,文本应至少为2个字符;如果qtype_数组中的文本是"单个",则在同一索引的真数组中文本内容的长度应为1;如果在qtype_数组中,文本内容的长度应为1。如果文本为"desc",则"true"数组中文本内容的长度应为0。

我正在开发一个在线考试系统。

我被卡住了,想不出解决办法……


您可以同时遍历两个数组,检查它们在每个位置是否具有您期望的值。

只需rmember检查两个数组的大小是否相同,以及每个位置的值是否是字符串。null.length将抛出一个错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;
    }
}


看这个小提琴,下面是解释:

假设您已经从页面收集了所有信息,那么您应该已经用数据填充了两个数组qtype_arraytrue_ans_array

这样地:

1
2
3
4
5
6
7
8
9
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());
});

现在两个数组中都有元素。下一步是检查所有元素。我假设两个数组都有相同数量的元素。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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");

}

}