1
我的想法是創建一個使用Google「TTS Api」動態播放任何文本的JS作爲音頻文件。這裏是我的JS代碼的一部分,這是我在Chrome中執行文件時得到的錯誤。不知何故,我無法訪問我的陣列中的for-Loop中的一些音頻對象。TTS HTML5 Audio EventListener
數組text_part
包含我想要使用的文本。 陣列audioElementListe
包含不同的音頻對象。
的錯誤,我得到: 遺漏的類型錯誤:無法調用未定義
BTW英語不是我的母語方法「玩」,我是一個總的JS-初學者;)
audioElementListe = new Array(3);
function start()
{
text_part = new Array(3);
text_part[0]='Hallo';
text_part[1]='Florian';
text_part[2]='Haha';
for(var i = 0; i < text_part.length; i++)
{
audioElementListe[i] = new Audio("");
}
for(var i = 0; i < text_part.length; i++)
{
var help = 0;
var url = "http://translate.google.com/translate_tts?tl=de&q="+text_part[i];
audioElementListe[i] = new Audio("");
document.body.appendChild(audioElementListe[i]);
audioElementListe[i].src=url;
audioElementListe[i].addEventListener('canPlay', function()
{audioElementListe[i].play();}, false);
//Error seems to be right here
audioElementListe[i].addEventListener('ended', function()
{audioElementListe[i++].play();}, false);
}
audioElementListe[0].play();
}
編輯:通過不創建新的音頻對象,但改變它的來源,做了一個「解決方法」。
<html>
<head>
</head>
<body>
<script type="text/javascript">
var audioElement;
var i;
function start()
{
i=0;
text_part = new Array(3);
text_part[0]='Hallo';
text_part[1]='Florian';
text_part[2]='Haha';
var url = "http://translate.google.com/translate_tts?tl=de&q="+text_part[i];
audioElement = new Audio("");
document.body.appendChild(audioElement);
audioElement.src=url;
audioElement.addEventListener('canPlay', function() {audioElement.play();}, false);
audioElement.addEventListener('ended', function()
{
i++;
if(i<text_part.length)
{
var url = "http://translate.google.com/translate_tts?tl=de&q="+text_part[i];
audioElement.src=url;
audioElement.addEventListener('canPlay', function() {audioElement.play();}, false);
audioElement.play();
}
;}, false);
audioElement.play();
}