抱歉,问题标题含糊不清 - 不确定如何措辞。
基本上,我有以下 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"
]);
关于JavaScript For 循环重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19809161/