麻烦改变音频源编程在JavaScript
Trouble changing audio source programmatically in JavaScript
我想我错过了一些愚蠢的东西。我正在创建一堆按钮与音频源的标题。当用户单击按钮时,音频播放器中的源应该更新。
不幸的是,音频源似乎总是最后一项。换句话说,这些按钮没有对应到正确的源。它们都对应于同一个源。
下面是我的代码:
episodes = {0: {title: 'Audio 1', url: 'audio1.mp3'}, 1: {title: 'Audio 2', url: 'audio2.mp3'}, 2: {title: 'Audio 3', url: 'audio3.mp3'}};
for (var i = 0; i < Object.keys(episodes).length; i++) {
var title = episodes[i].title;
var url = episodes[i].url;
var button = document.createElement('button');
button.innerHTML = title;
button.addEventListener("click", function() {
$('#player').attr('src', url)[0];
$('#player')[0].load();
});
document.body.appendChild(button);
}
或者,作为一个小提琴:https://jsfiddle.net/jmg157/1cL9p1qa/
在这里,您会注意到,当您单击按钮时,控制台中的消息总是显示相同的值。
请试试:
episodes = {0: {title: 'Audio 1', url: 'audio1.mp3'}, 1: {title: 'Audio 2', url: 'audio2.mp3'}, 2: {title: 'Audio 3', url: 'audio3.mp3'}};
for (var i = 0; i < Object.keys(episodes).length; i++) {
var title = episodes[i].title;
var url = episodes[i].url;
var button = document.createElement('button');
button.innerHTML = title;
button.audioUrl = url;
button.addEventListener("click", function(e) {
console.log(e.target.audioUrl);
$('#player').attr('src', e.target.audioUrl)[0];
});
document.body.appendChild(button);
}
您必须将url附加到元素,因为变量url
将保留最后一个值audio.mp3
。
https://jsfiddle.net/y0mkw5gr/
相关文章:
- 移动html/javascript编程中的变量传递
- javascript编程和css问题
- 通过javascript编程设置请求[quot;__EVENTTARGET"]
- 使用javascript编程触发iOS safari中的复制菜单
- Javascript编程错误
- 如何使用 javascript 编程从另一个数组的值中获取数组中最高索引的值
- 加快Java EE应用程序的JavaScript编程
- 如何用javascript编程编辑HTML格式的文本,而不需要手动处理标记和HTML
- 如何“;添加“;现有JavaScript编程游戏的并发性
- 用Javascript编程触发鼠标移动事件
- 如何知道某些东西是用Flash还是Javascript编程的
- 用javascript编程激发onmousemove事件
- 如何用javascript编程使某些文本加粗
- 使用JavaScript编程编写html
- 用JavaScript编程选择文本
- 如何用javascript编程复杂的图像网格
- Javascript编程,函数未定义错误
- Chrome不支持新的CSS和Javascript编程
- Khanacademy上的Javascript编程.为什么下半部分的按钮不工作?
- JavaScript编程上.click()不会在ReactJS元素中触发