0

我正在制作一个 jquery 插件来显示钢琴音阶。

我有一个名为 markScale(a, b) 的函数,它将用于突出显示某些音阶(a 参数给出了起始音符的音高,即从 C 开始多少个半音,默认音阶)。那没问题。

问题在于 b,要显示的音阶或和弦类型。我已经定义了在不同类型的比例中使用哪些键,如下所示:

  var majorScale=[12,14,16,17,19,21,23,24];
  var nminorScale=[12,14,15,17,19,20,22,24];
  var hminorScale=[12,14,15,17,19,20,23,24];

所以我想做的是以下几点:

  for(i=0;i<8;i++){
  $('#key-'+(b[i]+a)+'-marker').show();
   }

markScale(0,"majorScale") 不起作用,因为那只是一个字符串,并不引用我需要的数组变量。

如何将数组变量称为函数的参数?

谢谢

4

2 回答 2

2

我认为我们缺少一些信息,但是如果您想按名称访问比例,请将数组放入对象而不是单个变量中。

var scales = {
    majorScale:[12,14,16,17,19,21,23,24],
    nminorScale:[12,14,15,17,19,20,22,24],
    hminorScale:[12,14,15,17,19,20,23,24]
};

然后您可以使用字符串引用比例...

var the_scale = "majorScale"

scales[the_scale][i];

虽然可以从字符串中引用局部变量,但它需要一种通常不推荐的方法。全局变量更容易一些。


如果您试图通过比例,那么您根本不使用字符串。您只需使用直接参考。majorScale

于 2012-06-09T22:53:07.163 回答
0

没有更多上下文很难判断,但是您是否尝试过将数组majorScale 本身传递给markScale() 函数?

如:markScale(c,majorScale);

而不是字符串:markScale(c, "majorScale");

于 2012-06-09T23:00:13.287 回答