在javascript中使用var作为var name

时间:2012-07-23 04:13:09

标签: javascript html var

我有一个小问题。 我想做的是制作一个InnerHTML变量。

也许代码更好地解释了它,我现在拥有的东西:

- - - - - - - - 使用Javascript

var VarOne = 'Four';        
var VarTwo = 'Five';
var VarThree = 'Six';


function MyFunction(){
document.getElementById("MyDiv").innerHTML = ['Var' + event.target.id];
     }

- - - - - - - - 的Html               

<div id="MyDiv"></div>

它不是寻找var,而是非常合乎逻辑地给出了VarOne,VarTwo或VarThree的结果,但是如何才能使用var?

5 个答案:

答案 0 :(得分:4)

虽然Jonathan的回答是正确的,但你应该避免用变量污染窗口对象。

考虑重构以使用对象来存储这些值:

var values = {one:'four', two:'five', three:'six'};

function MyFunction(){
    document.getElementById("MyDiv").innerHTML = values[event.target.id];
}

这在窗口范围中只留下一个变量(使用闭包也可以避免)。

答案 1 :(得分:2)

默认范围内的变量位于window对象中。你应该能够做到:

var id = 'One'
var VarOne = 'Four';
var VarTwo = 'Five';
var VarThree = 'Six';

alert(window["Var" + id]); // => Four

因此,您应该能够将MyFunction函数的内容更改为:

document.getElementById("MyDiv").innerHTML = window['Var' + event.target.id];

答案 2 :(得分:2)

不要直接使用字符串作为变量名,而是将值放入哈希值:

var Vars = { 'One': 'Four', 'Two': 'Five', 'Three': 'Six' };        


function MyFunction(){
  document.getElementById("MyDiv").innerHTML = Vars[event.target.id];
}

答案 3 :(得分:1)

更安全的版本和结构更好的版本可能包含以下内容:

var DivContents = {
    VarOne : "Four",
    VarTwo : "Five",
    VarThree : "Six"
};


function MyFunction(){
    document.getElementById("MyDiv").innerHTML = DivContents['Var' + event.target.id];
}

答案 4 :(得分:0)

现在,我不是JavaScript专家,但也许eval()可以做你想做的事情吗?

 var results = eval('Var' + number);

或者,你可以创建一个数组并以这种方式访问​​你的数据。