Javascript错误,未定义,不是对象

时间:2015-08-16 18:02:56

标签: javascript controller mapping

我是JavaScript的新手,我正在尝试映射我的控制器的按钮和LED用于mixxx应用程序。那是一个对象,一个数组? var缺失了。

BehringerCMDMM1.leds = [
    // Master
    { "shiftButton" : 0x12 },
    // Deck 1
    {  "sync" : 0x30  },
    // Deck 2
    {  "sync" : 0x33  }
];

我在这里有错误,

BehringerCMDMM1.shiftButton = function (channel, control, value, status, group) {
// Note that there is no 'if (value)' here so this executes both when the shift button is pressed and when it is released.
// Therefore, BehringerCMDMM1.shift will only be true while the shift button is held down
var deck = BehringerCMDMM1.groupToDeck(group);
BehringerCMDMM1.shift = !BehringerCMDMM1.shift // '!' inverts the value of a boolean (true/false) variable
BehringerCMDMM1.setLED(BehringerCMDMM1.leds[deck]["shiftButton"], BehringerCMDMM1.shift);

}

关于" shiftButton"如未定义。

我也有这个功能

BehringerCMDMM1.setLED = function(value, status) {

status = status ? 0x7F : 0x00;
midi.sendShortMsg(0x94, value, status);

}

这是我在互联网上为不同的控制器创建的javascript文件。所以,我正在努力了解如何配置我的。

2 个答案:

答案 0 :(得分:3)

BehringerCMDMM1.leds是一个对象数组。在该数组中,索引0处的元素是具有shiftButton属性的对象。因此,在示例中获取0x12值的唯一方法是执行此操作:

BehringerCMDMM1.leds[0]['shiftButton']

所以当这段代码执行时......

var deck = BehringerCMDMM1.groupToDeck(group);

... deck的值可能不是0,并且您正在访问sync数组中的BehringerCMDMM1.leds个对象之一。例如,如果deck的值为1,则此...

BehringerCMDMM1.leds[deck]['shiftButton']

...将undefined,因为您有效地执行此操作:

BehringerCMDMM1.leds[1]['shiftButton']

答案 1 :(得分:1)

好的,

  

我是JavaScript新手,我正在尝试映射控制器的按钮和LED用于mixxx应用程序。那是一个对象,一个数组吗?

你有一系列对象。

  缺少

var。

您应该测试甲板变量内部的内容。试试这个:

'SELECT * FROM users WHERE ' . $field . ' = :value'