javascript - 接连播放音频

标签 javascript html audio javasound

我正在尝试编写一个程序,该程序将包含一个句子并播放每个单词的声音片段。我对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/

相关文章:

javascript - 为什么这个函数尽管在声明之前就被调用了,但仍会快速运行?

javascript localstorage 两个div

javascript - 如何在不折叠的情况下将div绘制到特定位置已经存在的div或没有覆盖

ios - 使用 iPhone SDK 播放 MP3 文件

unity3d - 来自 VideoPlayer 的 VideoClp 的音频源的音量控制

c - Linux 中 C 的 sound() 和 nosound() 函数?

javascript - 使用js进行表单验证冲突

javascript - 系统对话框 Angular Material

html - 我在 ul 中嵌套了 ul 但出现错误。我在这里搜索过,但解决方案似乎不适用

javascript - 如何使用 PHP 将信息从 Javascript 获取到 MySQL 数据库?