2017-03-02 24 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);之前中止。