0

我有一个小问题。我想做的是制作一个 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?

4

5 回答 5

4

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

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

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

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

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

于 2012-07-23T04:24:12.963 回答
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];
于 2012-07-23T04:16:44.777 回答
2

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

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


function MyFunction(){
  document.getElementById("MyDiv").innerHTML = Vars[event.target.id];
}
于 2012-07-23T04:23:03.507 回答
1

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

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


function MyFunction(){
    document.getElementById("MyDiv").innerHTML = DivContents['Var' + event.target.id];
}
于 2012-07-23T04:21:55.707 回答
0

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

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

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

于 2012-07-23T04:18:01.383 回答