如何在javascript中声明和使用动态变量?

时间:2011-05-10 03:11:25

标签: javascript

假设我需要根据计数器声明一个javascript变量我该怎么做?

var pageNumber = 1;
var "text"+pageNumber;

以上代码不起作用?

你可以帮忙吗? 谢谢!

7 个答案:

答案 0 :(得分:72)

在JavaScript中(据我所知),有两种方法可以创建动态变量:

  1. eval功能
  2. 窗口对象
  3. EVAL:

    var pageNumber = 1;
    eval("var text" + pageNumber + "=123;");
    alert(text1);
    

    窗口对象:

    var pageNumber = 1;
    window["text" + pageNumber] = 123;
    alert(window["text" + pageNumber]);
    

答案 1 :(得分:8)

您如何访问所述变量,因为您不知道它的名字? :)你可能最好在一个对象上设置一个参数,例如:

var obj = {};
obj['text' + pageNumber] = 1;

如果你真的想这样做:

eval('var text' + pageNumber + '=1');

答案 2 :(得分:6)

我认为你不能唱JavaScript.I认为你可以使用数组而不是这个,

 var textArray=new Array();
    textArray[pageNumber]="something";     

答案 3 :(得分:3)

假设变量在全局范围内,您可以执行以下操作:

var x = 1;
var x1 = "test"
console.log(window["x" + x]); //prints "test"

然而,一个更好的问题可能是你想要这样的行为。

答案 4 :(得分:2)

您也可以将计数器包裹在一个对象中:

var PageNumber = (function() {
  var value = 0;
  return {
   getVal: function(){return value;},
   incr: function(val){
            value += val || 1;
            this['text'+value]=true /*or some value*/;
            return this;
         }
   };
})();

alert(PageNumber.incr().incr().text2); //=>true
alert(PageNumber['text'+PageNumber.getVal()]) /==> true

答案 5 :(得分:1)

可以使用JS中的this关键字来完成:

例如:

var a = [1,2,3];

for(var i = 0; i < a.length; i++) {
  this["var" + i] = i + 1;
}

然后当你打印:

var0 // 1
var1 // 2
var2 // 3

答案 6 :(得分:0)

我最近需要这样的东西。

我有一个像这样的变量列表:

var a = $('<div class="someHtml"></div>'),b = $('<div class="someHtml"></div>'),c = $('<div class="someHtml"></div>');

我需要使用另一个变量来调用它们,该变量包含一个字符串,其名称为以下变量之一:

var c = 'a'; // holds the name of the wanted content, but can also be 'b' or 'c'

$('someSelector').html(eval(c)) // this will just use the content of var c defined above

只需使用eval获取可变数据。

我刚刚做了