所以,我有以下四个变量:
var hi1 = "Hello!";
var hi2 = "Hello to you too!";
var hi3 = "I'm good, thanks!";
var i = 0;
根据用户的操作,变量i会增加一个。
我的问题是,仅凭我怎么能获得hi1或hi2?
例如,我想这样做:
document.getElementById("idol").innerHTML = hi + number;
当我做这样的事情时,出现错误“ hi is not defined”(或类似的东西)
答案 0 :(得分:2)
您可以使用 eval语法 "eval()"
来获取属性eval("hi" + 2) == (variable)Hi2
。
请查看documentation,以了解有关评估的更多信息。
注意:评估可能是您在javascript中最糟糕的事情。我强烈建议您不要在代码中的任何地方使用eval
语法。
但是无论如何。这是一些与您的问题匹配的示例代码:
var hi1 = "Hello!";
var hi2 = "Hello to you too!";
var hi3 = "I'm good, thanks!";
var i = 0;
let number = 2
document.getElementById("idol").innerHTML = eval("hi" + number);
<div id="idol"></div>
另一种可能性是使用window object
并使用以下语法:
let content = window["hi" + number];
或者您也可以使用一个对象来存储数据。
let hiObject = {
1: "Hello!",
2: "Hello to you too!",
3: "I'm good, thanks!"
}
let content = hiObject[number]
...甚至是数组:
let hiObject = [
"Hello!",
"Hello to you too!",
"I'm good, thanks!"
]
let content = hiObject[number]
答案 1 :(得分:1)
在这种情况下,最好的方法是使用array。我将用以下代码复制您的案例。
var i = 0;
var hi = ["Hello!","Hello to you too!","I'm good, thanks!"];
for(var i=0; i<hi.length; i++){
document.getElementById("idol").innerHTML += hi[i]+"<br/>";
}
<div id="idol"></div>
答案 2 :(得分:1)
您提到那些hi1
,hi2
是函数。但是,即使它们是函数,您仍然可以使用数组来存储它们:
var hi1 = () => "Hello!";
// hi1 is a function that returns "Hello!"
var hi2 = () => "Hello to you too!";
// hi2 is a function that returns "Hello to you too!"
var array = [hi1, hi2];
要访问功能:
array[0]()
=> "Hello!"
array[1]()
"Hello to you too!"
document.getElementById("idol").innerHTML = array[i-1]();