Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中随机单独播放音频文件_Javascript_Dom Events_Html5 Audio - Fatal编程技术网

Javascript 如何在JS中随机单独播放音频文件

Javascript 如何在JS中随机单独播放音频文件,javascript,dom-events,html5-audio,Javascript,Dom Events,Html5 Audio,我创建了一个小的Kanye West Quote生成器,除了获取随机Kanye Quote的按钮外,我还加入了一些音频文件来播放(只有三个Kanye说话的音频片段) 我想做的是:当点击按钮显示新的报价时,应该会播放一段音频(来自3)。目前,我有它将播放,但所有3个音频文件一次播放或两次播放,其中一个单独播放在下一次点击 以下是我的音频代码: const kanyeBush = document.getElementById('bush'); const kanyeOpinion = docume

我创建了一个小的Kanye West Quote生成器,除了获取随机Kanye Quote的按钮外,我还加入了一些音频文件来播放(只有三个Kanye说话的音频片段)

我想做的是:当点击按钮显示新的报价时,应该会播放一段音频(来自3)。目前,我有它将播放,但所有3个音频文件一次播放或两次播放,其中一个单独播放在下一次点击

以下是我的音频代码:

const kanyeBush = document.getElementById('bush');
const kanyeOpinion = document.getElementById('opinion');
const kanyeRobot = document.getElementById('robot');
let kanyeQuoteArray = [kanyeBush, kanyeOpinion, kanyeRobot];

const kanyeSounds = () => {
        let kanyeSoundbite = kanyeQuoteArray.forEach( sound => {
            sound.play();
        });
        let audio = new Audio(kanyeSoundbite);
        audio.play();
}
然后,我在获取代码中运行了以下命令:

const kanyeQuote = async () => {
    const kanyeResponse = await fetch(kanyeApi);
    const quoteJson = await kanyeResponse.json();
    const randomQuote = document.createElement('h3');
    quoteBox.innerHTML = "";
    randomQuote.innerHTML = quoteJson.quote;
    quoteBox.appendChild(randomQuote);
    kanyeBtn.classList.toggle('hidden');
    newQuoteBtn.classList.toggle('hidden');
    kanyeSounds();
}


newQuoteBtn.addEventListener('click',kanyeQuote);
kanyeBtn.addEventListener('click', kanyeQuote)

有什么建议吗?

您可以设置声音。在forEach中播放所有声音。。。所以他们一起玩。你必须指定一个你希望玩的游戏。例如,你可以使用随机索引

constkanyesounds=()=>{
设bitIndex=Math.floor((Math.random()*kanyequotaray.length))
让kanyeSoundbite=kanyeQuoteArray.forEach((声音,索引)=>{
sound.pause();//重置上一个
sound.currentTime=0;//重置位置
如果(索引===bitIndex)sound.play();
});
let audio=新音频(kanyeSoundbite);
音频播放();
}

我希望能为您提供一些有价值的东西,但不幸的是,我只有一句真诚的感谢。成功了。我不知道为什么我不能考虑在forEach中加入另一个参数(因为我对这个世界非常陌生)。再次感谢你!