使用函数制作的 HTML 元素具有相同的事件侦听器
HTML elements made with function have same event listener
const add_compressor = (number) => {
let div = document.createElement('div');
div.className = 'compressor';
let threshold = document.createElement('input');
threshold.type = 'number';
threshold.className = 'input_number';
threshold.addEventListener('input', () => {
compressors[number].threshold.value = threshold.value;
})
div.appendChild(threshold);
added_effects.appendChild(div);
}
add_button.addEventListener('click', () => {
if (select_effect.value != 'Add Effect...') {
if (select_effect.value === 'compressor') {
compressors[compressors.length] = effects[select_effect.value];
add_compressor(compressors.length - 1);
}
}
})
我正在尝试允许使用此add_compressor
函数为 Web 音频 API 创建多个压缩器。除了threshold.addEventListener
链接到创建的每台压缩机之外,一切都可以正常工作。我想知道是否可以以这种方式为多个压缩器创建事件侦听器。这是一个JS小提琴,在控制台中显示了问题。
https://jsfiddle.net/0L1my6kp/
更改压缩机的任何输入框都将更改所有压缩机的阈值。
问题是你只创建一个压缩器对象一次,并且每次都引用同一个对象。
所以取而代之的是这个
const effects = {
compressor: context.createDynamicsCompressor()
}
它应该是
const effects = {
compressor: context.createDynamicsCompressor
}
然后,当您单击该按钮时创建一个新的压缩器。查看更新的小提琴:https://jsfiddle.net/0L1my6kp/4/
相关文章:
- 如何在for循环中添加事件侦听器
- 未命中服务器发送的事件侦听器
- 如何覆盖原型中的事件侦听器
- 无法将事件侦听器附加到画布
- 如何在d3.js中自定义事件侦听器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- 事件侦听器未在chrome扩展中的options.js中启动
- IE8更改文本区域上的事件侦听器不工作
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- javascript删除事件侦听器
- 我应该/如何清除mousemove JQuery事件侦听器
- 在JQuery中使用谷歌地图Api事件/侦听器
- 如何使用我的Jquery代码创建委托事件侦听器
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 为什么此事件侦听器不工作
- 仅当类存在于Javascript中时才允许侦听器事件运行
- 不确定Google Maps的侦听器事件中值为何未定义
- 如何向控件添加侦听器事件
- 无法在地图单击侦听器事件上显示另一个地图
- Chrome运行时OnMessage侦听器事件未启动