2017-03-02 41 views
0

我想说只有4个字母的列表中的每个字母。我的例子现在只是说“点击”每个字母,但是我的代码没有产生“点击”。如果提供了以下javascript语句,它将在页面加载时产生一个“单击”:speechSynthesis.speak(msg);。但作为我的功能next()的一部分,我听不到任何声音。做JavaScript语音合成说一个列表需要回拨

的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

+0

您错过了任何元素与'id =“theletter”'https://jsfiddle.net/xn09mk7c/1/ - 顺便说一句圣洁的抽烟,我不知道js有内置的语音合成支持:O - 令人愉快的惊喜每天 :) –

回答

3
  1. 打开您的浏览器的开发者工具
  2. 查看控制台
  3. 读取错误报告

它说:

Uncaught TypeError: Cannot set property 'innerHTML' of null

您编写HTML和写入JS之间改变跨度的id

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