我有一个小问题。 我想做的是制作一个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?
答案 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);
或者,你可以创建一个数组并以这种方式访问你的数据。