javascript 用于说出列表的语音合成是否需要回调

does javascript speech synthesis for saying a list need a callback

我想说出只有 4 个字母的列表中的每个字母。我的例子现在只是为每个字母说 "click",但我的代码没有生成 "click"。如果提供以下 javascript 语句,它会在加载页面时生成一个 "click":speechSynthesis.speak(msg);。但是作为我的功能的一部分 next() 我听不到声音。

Javascript:

var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[10]; // Note: some voices don't support altering params
msg.voiceURI = 'native';
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = 2; //0 to 2
msg.text = 'click';
msg.lang = 'en-US';

    function next() {
      if (cardi < showdeal.length - 1) {
        var text = showdeal.substr(cardi + 1,1);
        document.getElementById("dealcardto").innerHTML = text;
        cardi++;
      speechSynthesis.speak(msg);
      }
  }

Html:

<button onclick="next()" class="button">Next in list</button>
<span style="font-size: 60" id="cardletterto">X</span>

Fiddle

  1. 在浏览器中打开开发者工具
  2. 查看控制台
  3. 阅读错误报告

它说:

Uncaught TypeError: Cannot set property 'innerHTML' of null

您更改了 id 编写 HTML 和编写 JS 之间的跨度。

脚本在到达 speechSynthesis.speak(msg); 之前中止。