JavaScript For 循环重复代码

标签 javascript jquery arrays for-loop increment

抱歉,问题标题含糊不清 - 不确定如何措辞。

基本上,我有以下 JavaScript,我想使用 for 循环来压缩它们。

$('.q1').keyup(function () {
    if ($.inArray($(this).val().toLowerCase(), a1) > -1) {
        //Stuff
    } else {
        //Other stuff
    };
});

$('.q2').keyup(function () {
    if ($.inArray($(this).val().toLowerCase(), a2) > -1) {
        //Stuff
    } else {
        //Other stuff
    };
});

您可以看到这两个函数之间的唯一变化是第一个类(.q1 或 .q2)和数组名称(a1 或 a2)。 到目前为止,我已经完成了以下工作...

for (var i=1; i<=8; i++) {
    $('.q'+i).keyup(function () {
        if ($.inArray($(this).val().toLowerCase(), a1) > -1) {
            //Stuff
        } else {
            //Other stuff
        };
    });
}

您可以看到,第一类问题已通过递增 i 变量得到解决,但我不确定如何在每个循环上更改数组值,使其变为 a1、a2、a3、a4 等。

任何帮助将不胜感激。谢谢。

编辑

a1和a2指的是数组...

var a1 = new Array();
a1[0] = "egypt";

var a2 = new Array();
a2[0] = "brasil";
a2[1] = "brazil";

我为测验的每个答案都有一个数组。每个数组中都有每个问题的可能答案。

最佳答案

有一种数据结构常用于解决此类问题:数组。它们比一堆变量更适合您的问题。

假设你有一个数组a,你可以这样做

for (var i=1; i<=8; i++) {
  (function(answers){
    $('.q'+i).keyup(function () {
        if ($.inArray($(this).val().toLowerCase(), answers) > -1) {
            $('#r').text('ok');
        } else {
            $('#r').text('not ok');
        };
    });
  })(a[i-1]);
}

你的数组将像这样初始化:

var a = [];
a.push([
   "egypt"
]);
a.push([
   "brasil",
   "brazil"
]);

Demonstration

关于JavaScript For 循环重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809161/

相关文章:

arrays - 对数组进行切片或使用 Iterator::skip 哪个更有效?

JavaScript - 正则表达式匹配不是函数

javascript - 使用jquery获取json数据

php - 点击浏览器后退按钮时哪种解决方案最好

python - 如何提取矩阵的非连续行和列?

c# - 是否可以将字节数组转换为AudioClip?

javascript - JS点击事件取决于div宽度

Javascript检查字符串中的三个升序字母和数字

jQuery parseJSON 对象问题/问题

jquery - jQuery 是否有一个快捷方式允许我一次指定多个属性?