Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将web音频节点绑定到类原型中的dom元素_Javascript_Jquery_Web Audio Api - Fatal编程技术网

Javascript 将web音频节点绑定到类原型中的dom元素

Javascript 将web音频节点绑定到类原型中的dom元素,javascript,jquery,web-audio-api,Javascript,Jquery,Web Audio Api,我的目标是:创建一个类“BoundSound”,它将引用一个Web音频,并有一个方法将dom元素动态绑定到该AudioNode的不同属性。例如,我可以创建一个BoundSound对象,引用振荡器,并将振荡器的type属性绑定到选择器元素,这样,当所选选项从“正弦”更改为“方形”时,振荡器的类型也会更改。然后使用相同的方法将数字输入字段绑定到振荡器的增益属性,以便有人可以键入一个数字,从而将振荡器的增益更改为该值 我一直在尝试不同的方法来分配事件处理程序,但没有成功。以下是我目前掌握的情况: fu

我的目标是:创建一个类“BoundSound”,它将引用一个Web音频,并有一个方法将dom元素动态绑定到该AudioNode的不同属性。例如,我可以创建一个BoundSound对象,引用振荡器,并将振荡器的type属性绑定到选择器元素,这样,当所选选项从“正弦”更改为“方形”时,振荡器的类型也会更改。然后使用相同的方法将数字输入字段绑定到振荡器的增益属性,以便有人可以键入一个数字,从而将振荡器的增益更改为该值

我一直在尝试不同的方法来分配事件处理程序,但没有成功。以下是我目前掌握的情况:

function BoundSound(audioNode) {
  this.audioNode = audioNode;
  this.bindings = {};
};

BoundSound.prototype.bind = function(property, element) {
  element[0].value = this.audioNode[property];
  this.bindings[property] = element[0];
  $('document').on("change", '#'+element[0].id, 
                    this.change(property, element[0].value));
}

BoundSound.prototype.change = function(prop, value) {
  this.audioNode[prop] = value;
  this.bindings[prop].value = value;
}

var bs = new BoundSound(createOsc());
bs.bind('type', $('#typeSelect'));
调用“bind”方法时,会调用一次“change”方法,但当选择器元素的值更改时,不会再次调用该方法


我这样创建事件监听器是正确的,还是有更好的方法将dom元素绑定到web音频节点?任何帮助都将不胜感激。

是否应该在
$('#typeSelect')
元素上而不是
$('document')
?将bind()的最后一行更改为
元素。on(“change”,this.change(属性,元素[0].value))给出了相同的结果。调用bind()时激发一次,然后不再激发。我尝试了$('document').on()方法,将元素的id作为参数传递,认为这会有所不同,但没有骰子。