0

我想以更有效的方式将值保存在变量中。我尝试编写一个 for 循环:

for(i=1; i <= $('input').length; i++) {
     var x+i = $('custom'+i).val());
}

我得到的是:'Uncaught SyntaxError: Unexpected token +' 这实际上是预期它不会工作,但我必须在问这里之前尝试

HTML

<input type="text" class="custom1">
<input type="text" class="custom2">
<input type="text" class="custom3">
till custom12..

我知道我可以这样做:

var x1 = $('.custom1').val(),
x2 = $('.custom2').val(),
x3 = $('.custom3').val(),
    till 12..

有没有更有效的方法来做到这一点?

4

5 回答 5

3

使用数组。

var x = [];
for(var i=1; i <= $('input').length; i++) {
     x.push($('.custom'+i).val());
}
于 2013-06-26T09:15:00.163 回答
1
var x = [];
$('input').slice(0,11).each(function(index){
    x.push($(this).val());
});

.slice(0,11)如果页面上实际上只有 12 个输入,则可以省略。

于 2013-06-26T09:26:45.430 回答
0

根据您之后想要对变量执行的操作,您还可以执行以下操作:

var results = {};
for(i=1; i <= $('input').length; i++) {
    results['x' + i] = $('.custom'+i).val());
}

这会将成员添加到“结果”对象中,因此您可以执行以下操作:

var xOne = results.x1;
var xOneAgain = results['x1'];
var xOneLastTime = result['x' + 1];

在这里工作小提琴。

不过,昆汀的回答可能是最自然的。

于 2013-06-26T09:18:52.520 回答
0

你可以试试这个

var arr = [];
var len = $('input').length;
for(var i=1; i <= len; i++) {
     arr.push($('.custom'+i).val());
}

上面的大多数答案都是正确的,但是$('input').length每次都进行评估,您可以通过评估一次并分配给一个变量来提高性能,而不是在循环中len使用该变量。len

于 2013-06-26T09:57:56.983 回答
-2
 var x = 0;
for(i=1; i <= $('input').length; i++) {
     x += parseInt($('.custom'+i).val()) || 0;
}
于 2013-06-26T09:23:06.120 回答