如何在Javascript中创建变量,并在变量名称中添加更改的数字?

时间:2014-11-04 05:37:38

标签: javascript

这段代码是完全错误的,但我希望它能让你了解我的目标:

var qarowquestion+obj.returnIntJson;

obj.returnIntJson的值只是一个整数。我想获取那里的值,例如:2043,并在qarowquestion结束时添加2043。因此,我会:

var qarowquestion2043;

感谢。

4 个答案:

答案 0 :(得分:1)

var myObj = {};
myObj['qarowquestion' + obj.returnIntJson] = 'some Val';

尝试以上方法。它将利用动态javascript并在myObj对象上创建qarowquestion2043属性。

答案 1 :(得分:0)

TGH的回复几乎是我所需要的,或者它是,我只是不知道如何使用它。

我更改了它,以便带有数字的部分是值,而不是键。

    var myObj = {};
    myObj['qarowquestion'] = "qarowquestion" + obj.returnIntJson;

现在,我可以使用myObj.qarowwquestion访问它,结果如下:qarowquestion2043

对于一个具体的例子,在我的情况下:

document.getElementById("qarow" + obj.returnIntJson).innerHTML = myObj.qarowquestion;

答案 2 :(得分:0)

您无法创建变量,如TGH所述,您可以将值添加为对象内的命名属性。

var obj = {};
obj['qarowquestion' + obj.returnIntJson] = 'xxx';

通过这种方式,您还可以为对象提供适当的命名空间。

var someNameSpace = {};
someNameSpace['someObject'] = 'someVal';

希望这会有所帮助。

答案 3 :(得分:0)

我在javascript中使用动态变量名称relevant SO postaccepted answer提出了一个非常好的观点(重点是我的):

  

由于ECMA- / Javascript完全是关于对象上下文(它们也是某些对象),因此每个变量都存储在一个名为Variable的变量中(或如果是函数,激活对象)。在全局范围(= NO函数上下文)中,您隐式将这些变量写入Global对象(=浏览器中的窗口)。

所以例如(再次从答案中得出):

function foobar() {
  this.a = 1;
  this.b = 2;

 var name = window['a']; // === undefined as it refers to the global context and is undefined
 alert(name);
 name = this['a']; // === 1
 alert(name); // outputs 1
 alert(a); //outputs 1

//Since we are talking about context here, you could clearly do

this['qarowquestion'+obj.returnIntJson] = "foo";
alert(qarowquestion2043); //outputs foo
}

因此,实质上,变量可以作为特定上下文中的对象进行访问,这可能非常有用。