假设我需要根据计数器声明一个javascript变量我该怎么做?
var pageNumber = 1;
var "text"+pageNumber;
以上代码不起作用?
你可以帮忙吗? 谢谢!答案 0 :(得分:72)
在JavaScript中(据我所知),有两种方法可以创建动态变量:
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获取可变数据。
我刚刚做了