如何通过数字javascript获取变量

时间:2018-07-08 16:29:44

标签: javascript

所以,我有以下四个变量:

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”(或类似的东西)

3 个答案:

答案 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)

您提到那些hi1hi2是函数。但是,即使它们是函数,您仍然可以使用数组来存储它们:

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]();