在javascript中使用变量的值作为变量

时间:2011-06-19 10:49:02

标签: javascript jquery html string variables

我有一个带值的变量,比方说

var myVarMAX = 5;

在HTML中,我有一个id="myVar"的元素。

我将id与字符串MAX(创建字符串myVarMAX)组合在一起。我的问题是如何使用此字符串来访问具有相同名称的变量?

2 个答案:

答案 0 :(得分:7)

你可以使用eval,但是如果你在窗口范围内有var,那就更好了

var myVarMAX = 5;
var id="MAX"; // likely not in a var

alert(window["myVar"+id]); // alerts 5

然而Don't pollute the global scope!

更好的解决方案就像我发布的链接

中建议的那样
var myVars = {
  "myVarMin":1,
  "myVarMax":5,
  "otherVarXX":"fred"
} // notice no comma after the last var

然后你有

警报(myVars [ “myVar的” + ID]);

答案 1 :(得分:0)

由于该帖子经常被提及,我想添加一个用例。

可能经常是PHP程序员尝试Javascript / Nodejs,却遇到了这个问题。

// my variables in PHP
$dogs  = [...]; //dog values
$cats  = [...]; //cat values
$sheep = [...]; //sheep values

比方说,我想将它们分别保存在自己的文件(dogs.json,cats.json,sheep.json)中,而不是全部同时保存,而无需创建诸如savedogs,savecats,savesheep之类的功能。示例命令为save('dogs')

在PHP中,其工作方式如下:

function save($animal) {
    if(!$animal) return false;
    file_put_contents($animal.'.json', json_encode($$animal));
    return true;
}

在Nodejs / Javascript中,可以这样做

// my variables in NodeJS/Javascript
let dogs  = [...]; //dog values
let cats  = [...]; //cat values
let sheep = [...]; //sheep values

function save(animal) {
    if (!animal) return false;

    let animalType = {};
    animalType.dogs  = dogs;
    animalType.cats  = cats;
    animalType.sheep = sheep;    

    fs.writeFile(animal + '.json', JSON.stringify(animalType[animal]), function (err){
       if (err) return false;
    });
    return true;

}