创建一个变量,每个循环中都有一个变量--jQuery

时间:2014-06-13 04:35:52

标签: javascript jquery variables dynamic each

我在使用jQuery中的另一个变量创建变量时遇到了一些困难。我不知道如何写出等式的变量。这是我尝试创建的内容:

var $counter= 0;
    $('.selector').each(function(){
       $counter += 1;
       var newVariable-($counter) // this is where I'd like to create the new  
                                  // variable with the number from $counter at the end.
    });

目标是创建:

newVariable-1
newVariable-2
newVariable-3... 

依旧......

3 个答案:

答案 0 :(得分:7)

您可以创建一个对象来保存这些值,但不能创建动态变量。

var $counter= 0;
var variableHolder = {};
$('.selector').each(function(){
   $counter += 1;
   variableHolder["newVariable-"+$counter] = ...
});

或者如果您想创建全局变量(不推荐),您可以使用window

var $counter= 0;
$('.selector').each(function(){
   $counter += 1;
   window["newVariable-"+$counter] = ...
});

答案 1 :(得分:1)

正如其他人所指出的那样,使用{}square bracket notation会大大简化这项任务。

这样的事情:

var myobj = {},
    prefix = 'my_cool_var';

for(var i = 0, len = 10; i < len; i++) {
    myobj[prefix + i] = undefined; // { my_cool_var + i : undefined }
}

// Setters - dot notation and square bracket
myobj.my_cool_var1 = "Hello!";
myobj['my_cool_var2'] = "Hello 2!";

// Getters - dot notation and square bracket
alert(myobj.my_cool_var1); // alerts Hello!
alert(myobj['my_cool_var2']); // alerts Hello 2!

现在,如果你需要在全局范围内公开变量(哎 - 但是,嘿,有时候你得),所以你不需要指定一个对象(myobj),你可以使用{ {1}}中带有方括号表示法的{1}}。

window

最后,如果你在网上搜索得足够深,那么你会发现for loop这样的例子:

var prefix = 'my_global_var';

for(var i = 0, len = 10; i < len; i++) {
    window[prefix + i] = undefined; // creates global, my_global_var + i = undefined
}

my_cool_var1 = "Hello!";
alert(my_cool_var1); // alerts Hello!

希望这有帮助!

答案 2 :(得分:0)

在这种情况下只需使用json,

var $counter= 0;
var $newVar = {};

$('.selector').each(function(){
   $counter += 1;
   $newVar['newVariable-'+ ($counter)] = null;
});

因此您可以像$newVar.newVariable-1,... $newVar.newVariable-N那样访问它。请注意,这是最佳做法,我们可以通过访问窗口对象进行操作,但不建议这样做。