如何在JavaScript/jQuery中使用.play()播放随机音频剪辑

如何在JavaScript/jQuery中使用.play()播放随机音频剪辑,javascript,arrays,playback,Javascript,Arrays,Playback,我想做的只是随机挑选一个音频文件并播放它。我正在尝试使用内置的.play()函数 我定义了四个音频剪辑,例如sound0-sound3: <audio id="sound0" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio> 我可以直接和你玩 $sound0.play(); 但是,如果我尝试做如下的事情 var pattern = [],

我想做的只是随机挑选一个音频文件并播放它。我正在尝试使用内置的.play()函数

我定义了四个音频剪辑,例如sound0-sound3:

<audio id="sound0" src="https://s3.amazonaws.com/freecodecamp/simonSound1.mp3" type="audio/mpeg"></audio>
我可以直接和你玩

$sound0.play();
但是,如果我尝试做如下的事情

var pattern = [],
    tone;
pattern.push(Math.floor(Math.random() * 4));
tone = "#sound" + pattern[0];
$(tone).play();
我得到了错误,uncaughttypeerror:$(…)。play不是一个函数


最好的方法是什么?谢谢大家!

不幸的是,我认为.play()方法是DOM的一部分,而不是jQuery函数。您可以通过以下两种方式完成此任务:

  • $(音调)[0]。播放()--由jremi回答。唯一需要注意的是,必须使用索引为零。我不知道这是否有效:
    $(音调)[1].play()
  • $(音调).get(0.play()

  • $(音调)。触发(“播放”)

  • 请在此处尝试:

    $(文档).ready(函数(){
    函数playSound(){
    var模式=[],
    语气;
    pattern.push(Math.floor(Math.random()*4));
    音调=“#声音”+模式[0];
    //$(音调).trigger('play');//取消对播放的注释
    //$(音调).get(0.play();//取消对播放的注释
    $(音调)[0]。播放();//要关闭的注释
    }
    $(“#按钮”)。单击(播放声音);
    });
    
    
    
    单击播放
    我参加聚会有点晚了,但我现在刚刚尝试过这种方法,它对我很有效,不过如果你有很多剪辑,它可能会变得有点复杂。我也不确定浏览器的兼容性

    var c = document.getElementById('playSound');
    c.onclick = function() {
        var number = Math.floor(Math.random() * 2);
    
        if (number == 0) {
            var audio = new Audio("beep.mp3");
        } else if (number = 1) {
            var audio = new Audio("bloop.mp3");
        }
        
        audio.play();
    }
    

    基本上,它只是在每次点击按钮时生成一个随机数,每个数字都附带一个音频剪辑。然后播放与该数字对应的剪辑。您可以通过增加第3行的数字并添加新的else if语句来增加剪辑的数量。

    您需要在最后一行设置索引。。。。应该是$(音调)[0]。播放();谢谢你,jremi,谢谢你,克里斯蒂安。我已将更改合并到代码中。由于某种原因,每个声音只会播放一次。然后,虽然代码运行,但声音不再播放。你知道这背后可能是什么吗?我的项目就在这里:经过进一步研究,解决“只播放一次”问题的方法是在之前使用.load()。play()不确定这背后的原因,但它是有效的。不客气。很高兴它对你有用。谢谢你的提问。:)
    var c = document.getElementById('playSound');
    c.onclick = function() {
        var number = Math.floor(Math.random() * 2);
    
        if (number == 0) {
            var audio = new Audio("beep.mp3");
        } else if (number = 1) {
            var audio = new Audio("bloop.mp3");
        }
        
        audio.play();
    }