javascript - 将多个音频点击 JS 功能合并为一个?

标签 javascript jquery audio

所以我找到了一个脚本并对其进行了修改以适应我的需要。但我还需要做一件事,但不知道从哪里开始。

这是我用来获取两个不同的音频文件以使用两个不同的按钮播放的代码

        $(document).on("click", "li", function(event) {
            var audioElement = document.createElement('audio');
            audioElement.setAttribute('src', 'http://www.uscis.gov/files/nativedocuments/Track%2093.mp3');

            //audioElement.load()
            $.get();
            audioElement.addEventListener("load", function(event) {
            audioElement.play();
            }, true);

            $('.play-duck-1').click(function(event) {
            audioElement.play();
            });
        });

            $(document).on("click", "li", function(event) {
            var audioElement = document.createElement('audio');
            audioElement.setAttribute('src', 'http://sandbox.acscreative.com/cort-aminals/sounds/new-recording.m4a');

            //audioElement.load()
            $.get();
            audioElement.addEventListener("load", function(event) {
            audioElement.play();
            }, true);

            $('.play-duck-2').click(function(event) {
            audioElement.play();
            });
        });

有没有办法组合这些脚本,这样我就不必为 36 个不同的音频文件和按钮复制并粘贴 36 次?

我看过很多“功能组合”的帖子,但没有一个看起来对我有用,除非我忽略了一些东西。

感谢您的帮助

最佳答案

我会这样做,

var audList = [
    ...
];  // can be dynamic, fetched from somewhere
var parentElement = document.getElementById('btnParent');
var audio = new Audio();
audList.forEach(function(src){
    parentElement.appendChild(createBtnElement(src.img, src.audio));
});

function createBtnElement(imgSrc, audioSrc){
    var li = document.createElement('li');
    var btn = document.createElement('img');
    btn.setAttribute('src', imgSrc);
    btn.setAttribute('height', 80); // change as per requirement
    btn.setAttribute('width', 80); // change as per requirement
    btn.className = 'playAudio someCSSClass img-responsive';
    btn.onclick = function(){
        audio.src = audioSrc;
        audio.play();
    };
    li.appendChild(btn);
    return li;
}

这样,一旦你改变了号码。音频文件的,你不需要接触HTML,只需修改audList,这样做的另一个好处是,不会同时播放两首歌曲,因为只有一个Audio 对象

Fiddle Demo

关于javascript - 将多个音频点击 JS 功能合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327296/

相关文章:

javascript - 更新后 react 18 Paypal 按钮显示两次

javascript - jQuery 在表格的每一行上应用函数

php - removeClass ("has-error")当字段更改时 Bootstrap、javascript

android - 将噪音作为输出而不是混合声音

audio - 自动语音匹配的开源?

javascript - 页面打开时运行 FB.logout()

javascript - 尝试使用 Node.js 在循环中动态设置页面

javascript - Electron :渲染器访问主进程?

javascript - 使用内部变量的 jQuery 自定义插件之间的冲突

javascript - Buildfire:音频播放器服务未创建timeUpdate事件