首页 > 解决方案 > 在js的循环中一个接一个地播放音频

问题描述

我还是 js 的新手,我尝试制作一个脚本,它会播放与内容相关的声音,当有一个积极的迹象时,音频会说积极,然后它会检查下一个字符,如果它再次是肯定的,它会第二次说是肯定的,如果是这样的话,它会说是否定的,依此类推。但由于某种原因,第一个音频只能工作一次,并且不会继续为 newText 上的每个字符播放声音。

var audioNegative = new Audio('/negative.mp3');
var audioPositive = new Audio('/positive.mp3');

var newText='+-+-+-++++--+-+';
        document.getElementById("newText").innerHTML = newText;
        for (var e = 0; e < newText.length; e++) {
           if(newText[e]=='+')
               {  
audioPositive.play();

               }
           if(newText[e]=='-')
               {           
audioNegative.play();

               }
           }

标签: javascriptloopsif-statementaudio

解决方案


您可以使用setTimeout()延迟播放音频。

var audioNegative = new Audio('/negative.mp3');
var audioPositive = new Audio('/positive.mp3');

var newText='+-+-+-++++--+-+';
document.getElementById("newText").innerHTML = newText;
for (var e = 0; e < newText.length; e++) {
    if(newText[e]=='+')
    {
        //Replace 1000 with your audio's length in ms
        setTimeout(() => audioPositive.play(), e * 1000);
    }
    if(newText[e]=='-')
    {
        //Replace 1000 with your audio's length in ms
        setTimeout(() => audioNegative.play(), e * 1000);
    }
}

推荐阅读