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

时间:2013-06-18 17:21:20

标签: javascript jquery

好的,你有一组变量:

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吗?

3 个答案:

答案 0 :(得分:5)

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

像...这样的东西。

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

答案 1 :(得分:2)

假设变量是在全局范围内声明的,您只需执行window[hash]

即可

因为您在全局范围内声明的任何变量都作为window的prpoerty附加(假设代码在浏览器中运行)。你可以用点符号

获得任何属性的值

window.height1

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

window["height1"]

由于您可以传递一个持有该键的变量,您只需执行

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

答案 2 :(得分:0)

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