1

如何比较每个输入文本的相同索引的值并选择控制数组?

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。

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

我被严重卡住了,想不出解决办法......

4

2 回答 2

0

看到这个小提琴,这里是解释:

假设您已经从页面收集了所有信息,您应该拥有两个数组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");

}

}

于 2013-10-25T20:44:52.607 回答
0

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

请记住检查两个数组是否具有相同的大小以及每个位置的值是否为字符串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;
    }
}
于 2013-10-25T21:02:56.433 回答