4

好的,您有一组变量:

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

4

3 回答 3

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);
于 2013-06-18T17:24:34.627 回答
2

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

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

窗口高度1

或通过使用属性名称作为键进行索引。那是

window["height1"]

并且由于您可以传递一个持有密钥的变量,因此您可以简单地做

var hash = "height1"; //replace with the code you already have
var height = window[hash];
于 2013-06-18T17:24:16.593 回答
0

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

于 2013-06-18T17:27:02.160 回答