javascript - JQuery 停止/暂停 for 循环中播放的声音

标签 javascript jquery loops for-loop audio

我正在尝试让 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/

相关文章:

javascript - 具有可点击的不规则形状的网格

javascript - React onclick 在非类组件上隐藏此组件

asp.net - 当非必填字段为空时,jquery 验证会停止页面提交

javascript - 使用 jQuery 在 10px 的 div 中检测鼠标悬停

php - 循环遍历3个不同的数组,并将值发送到MYSQL表中

javascript - 如何从javascript中的对象数组中删除对象

javascript - Underscore.js 和 noconflict

javascript - 从其属性名称中获取标签名称

javascript - 遍历 JSON 对象数组并根据对象的匹配 ID 获取属性

c++ - 循环中列表的最后一个元素