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

Javascript ERROR, undefined, not an object

本文关键字:对象 未定义 错误 Javascript      更新时间:2023-09-26

我是新的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文件,我发现在互联网上创建了一个不同的控制器。所以,我正在努力了解如何配置我的。

BehringerCMDMM1.leds是一个对象数组。在该数组中,索引0处的元素是一个具有shiftButton属性的对象。因此,在您的示例中获得0x12值的唯一方法是这样做:

BehringerCMDMM1.leds[0]['shiftButton']

所以当这段代码执行时…

var deck = BehringerCMDMM1.groupToDeck(group);

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

BehringerCMDMM1.leds[deck]['shiftButton']

…将是undefined,因为你在有效地做这个:

BehringerCMDMM1.leds[1]['shiftButton']

Ok,

我是新的JavaScript,我正试图映射我的控制器的按钮和led的mixxx应用程序。这是一个对象,一个数组吗?

你有一个对象数组。

var丢失

你应该测试你的deck变量里面是什么。试试这个:

console.log(deck);
if (deck in BehringerCMDMM1.leds) {
    BehringerCMDMM1.setLED(BehringerCMDMM1.leds[deck]["shiftButton"], BehringerCMDMM1.shift);
} else {
    console.log("Index: "+deck+" doesn't exist");
}