我正在尝试让 for 循环重复播放声音,直到变量发生变化:
var ding;
for(ding = 1; ding < 20; ding++) {
function chamada() {
jQuery.playSound('components/com_chat/sys/chamada');
}
var delay = ding * 2500;
setTimeout(chamada, delay);
if (ding == 0){
break;
}
}
具有 playSound 功能的外部 .js 文件:
(function($){$.extend({
playSound: function(){
return $(
'<audio autoplay="autoplay" style="display:none;">'
+ '<source src="' + arguments[0] + '.mp3" />'
+ '<source src="' + arguments[0] + '.ogg" />'
+ '<embed src="' + arguments[0] + '.mp3" hidden="true" autostart="true" loop="false" class="playSound" />'
+ '</audio>'
).appendTo('body');
}
});
})(jQuery);
已编辑
代码正在运行,并将在循环结束时停止,但当我定义 ding = 0 单击对话框时不会停止:
ConfirmDialog('answer');
function ConfirmDialog(message){
jQuery('<div></div>').appendTo('body')
.html('<div class="widget">answering</div>')
.dialog({
modal: true, title: 'answer', zIndex: 10000, autoOpen: true,
width: 'auto', resizable: false,
buttons: {
"Answer": function () {
ding = 0;
},
Cancelar: function () {
//...
}
},
close: function (event, ui) {
jQuery(this).remove();
}
});
};
}
怎样才能让它在 ding = 0 时停止?
最佳答案
var ding;
for(ding = 1; ding < 20; ding++) {
function chamada() {
jQuery.playSound('components/com_chat/sys/chamada');
}
var delay = ding * 2500;
setTimeout(chamada, delay);
if (ding == 0){
break;
}
}
在此代码中,您的 ding 变量会增加而不是减少,因此它实际上不会达到 0。
关于javascript - JQuery 停止/暂停 for 循环中播放的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612297/