【发布时间】:2017-01-21 07:49:15
【问题描述】:
我正在尝试为 audiojs 音频播放器创建一个音量滑块。我已成功创建滑块并将其绑定到音频播放器,但我的问题是它仅适用于播放器的第一个实例。我认为它需要某种循环才能找到音频播放器的所有实例,但我在编写循环时遇到了麻烦。
在我的 head 标签中运行的 javascript 是:
audiojs.events.ready(function() {
var as = audiojs.createAll();
$('.slider').each(function() {
var slider = $('.slider'),
tooltip = $('.tooltip'),
audioList = document.getElementsByTagName("audio").length;
tooltip.hide();
slider.slider({
range: "min",
min: 0,
max: 100,
value: 50,
change: function(){
var value = $(".slider").slider("value");
for (var i = 0; i > audioList; i++) {
document.getElementById("player").volume = (value / 100);
};
},
start:function(event,ui) {
tooltip.fadeIn('fast');
},
slide: function(event, ui) {
var volume = $('.volume'),
value = $(".slider").slider("value");
document.getElementById("player").volume = (value / 100);
tooltip.css('left',value / 2).text(ui.value);
if(value <= 5) {
volume.css('background-position', '0 0');
}
else if (value <= 25) {
volume.css('background-position', '0 -25px');
}
else if (value <= 75) {
volume.css('background-position', '0 -50px');
}
else {
volume.css('background-position', '0 -75px');
};
},
stop:function(event,ui) {
tooltip.fadeOut('fast');
},
});
});
});
我需要一个兼容所有现代浏览器的解决方案。我在 github here 中有完整的文件。
【问题讨论】:
-
创建了以下工作示例进行测试:jsfiddle.net/Twisty/qx4Lzu9d
-
我看不到您的 HTML 中哪里定义了任何滑块。当你运行
$('.slider').each()时,有0项被选中;因此,循环迭代 0 次。 -
它在我链接到 aobve 的 github 目录中的 audio.min.js 文件中,以便它在每次 audiojs 代码运行时自动构建它。
-
好的,我仍然没有在生成的 HTML 中看到任何内容。无论如何,我有一些我会建议的更新。首先,所有
id属性必须是唯一的。你有两次#player。这将在调整音量时在您选择播放器时产生问题。我也会使用ui.value而不是$(".slider").slider("value"),因为这是模棱两可的。
标签: javascript jquery jquery-ui jquery-ui-slider audiojs