我正在尝试编写一个程序,该程序将包含一个句子并播放每个单词的声音片段。我对stackoverflow和javascript / html相当陌生,所以对不起,这种格式很垃圾。我遇到了一个问题,即单词只是一起玩,为了解决这个问题,我添加了一个.onended(),但这仅针对前两个单词进行了修复,使用循环无效。感谢您的任何帮助。这是我目前拥有的:
<body>
What would you like me to say?
<input type="text" id="words"/>
<script>
document.getElementById('words').addEventListener('keypress', function (e) {
if (e.which === 13) {
var sentence = document.getElementById("words").value;
var splitted = sentence.split(" ");
var length = splitted.length;
var i = 1;
var sp = new Audio (splitted[0] + '.m4a');
sp.play();
sp.onended=function(){
if(i<length){
var sp = new Audio (splitted[i] + '.m4a');
sp.play();
i++;
}
}
}
});
这就是我以前做过的事情,当我循环播放所有这些并且它们一起玩时:
for(i=0;i<length;i++){
var sp = new Audio(splitted[i] + 'm4a');
sp.play();
}
最佳答案
当您为下一个单词var sp = new Audio (splitted[i] + '.m4a')
创建音频时,将创建一个新的原始Audio实例。因此,第二个单词没有设置.onended
处理程序。这就是为什么它只播放前两个单词的原因。
要解决此问题,必须为创建的每个音频添加一个ended
侦听器。
关于javascript - 接连播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012504/