在javascript中将字符串转换为变量名称?

好的,你有一组变量:

var height1 = 10 var height2 = 20 ... var height7 = 70; 

用户已经给出了输入,你需要获取其中一个变量的值,这里是代码:

 if(window.location.hash) { var hash = window.location.hash.substring(1); var option_name = $('a[name=' + hash + ']').closest('[id^="option"]').attr("id"); var hash_div_height_id = "height" + option_name.substring(6); $('a[name=' + hash + ']').closest('[id^="option"]').show(); $('a[name=' + hash + ']').closest('[id^="option"]').height(hash_div_height_id); } else { // No hash found } 

我现在的问题是我无法将“hash_div_height_id”(当前表示字符串“height1”或“height2”或jQuery返回的任何数字追加到字符串末尾)传递给高度函数,因为它是一个字符串。

那我怎么能这样呢? 我可以以某种方式转换字符串“height1”来表示之前建立的变量height1吗?

将高度指定为对象的属性。

就像是..

 var heightObj = { height1 : 10, height2 : 20, height7 : 70 }; var hash_div_height_id = "height" + option_name.substring(6); 

要访问特定属性,请使用[]表示法访问该属性

 var newHeight = heightObj[hash_div_height_id]; $('a[name=' + hash + ']').closest('[id^="option"]').height(newHeight); 

假设变量是在全局范围内声明的,你可以只做window[hash]

这是因为您在全局范围内声明的任何变量都被附加为window的prpoerty(假设代码在浏览器中运行)。 并且您可以通过点表示法获取任何属性的值

window.height1

或者使用属性名称作为键索引。 那是

 window["height1"] 

因为您可以传递一个持有该键的变量,您可以这样做

 var hash = "height1"; //replace with the code you already have var height = window[hash]; 

您是否可以控制变量,因为高度数组会更适合您,如果失败,请自行创建数组,以便将高度1..X推入数组,然后您可以使用索引。