我正在制作一个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”)不起作用,因为它只是一个字符串而不是指我需要的数组变量。
如何将数组变量称为函数的参数?
由于
答案 0 :(得分: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
答案 1 :(得分:0)
没有更多上下文很难说,但是你试过将数组majorScale本身传递给markScale()函数吗?
如: markScale(c,majorScale);
而不是字符串: markScale(c,“majorScale”);