2015-01-20 3 views
2

Пожалуйста, посмотрите на код нижеНе удается вызвать класс Javascript от HTML

TTSScript.js

function TTS() 
{ 
    var msg = new SpeechSynthesisUtterance("yohan"); 
    var voices = window.speechSynthesis.getVoices(); 

    this.speakText = function() 
     { 
      window.speechSynthesis.speak(msg); 
     } 
    } 

index.html

<html> 
    <head> 
     <title>TODO supply a title</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

     <script src="/scripts/TTSScript.js"></script> 
     <script> 
      function speak() 
      { 
       var msg = new SpeechSynthesisUtterance('Hello World'); 
       window.speechSynthesis.speak(msg); 
      } 

      function speak2() 
      { 
       var TTS = new TTS(); 
       TTS.speakText(); 
      } 


     </script> 
    </head> 
    <body> 
     <div><button onclick="speak2()">Click me</button></div> 
    </body> 
</html> 

Unfortunatly, когда я нажмите на кнопку на странице html, то, что я получаю, является ошибкой. Это ниже.

Uncaught TypeError: undefined is not a function (13:42:13:817 | error, javascript) 
    at speak2 (public_html/index.html:23:26) 
    at onclick (public_html/index.html:31:126) 

Я не очень знаком с JavaScript, можете ли вы сообщить мне, почему я получаю эту ошибку и как ее исправить?

+0

Это единственная ошибка? это 'SpeechSynthesisUtterance', определенный в вашем браузере? –

+0

js fiddle приветствуется, в другом случае это «почему этот код не работает?». вопрос – micnic

+0

@TimSeguine: как вы можете видеть, я могу вызвать функцию 'speak()' без проблем, да, определяется 'SpeechSynthesisUtterance'. –

ответ

1

Я решил проблему ..:

  1. не использовать все имена капитала как переменные

    Var TTS = новый TTS(); tts.speakText();

  2. правильный вызов говорить в скрипкой

    http://jsfiddle.net/bpprwfxa/4/

var msg = new SpeechSynthesisUtterance('Yohan'); 
 
window.speechSynthesis.speak(msg);

+0

Не работает в машине, работает в скрипке. Как я уже упоминал, функция TTS принадлежит другому сценарию, а не внутреннему JS. –

+0

Хорошо, это сработало. Благодаря! –

2

После объявления функции ее имя становится (локально) сохраненным словом. Это означает, что создание переменной с тем же именем может вызвать некоторые проблемы.

Я взял свой код и изменил

var TTS = new TTS(); 
TTS.speakText(); 

В

var tts = new TTS(); 
tts.speakText(); 

И исчезла ошибка.

+0

Это означает, что он работает на вас? потому что не для меня ... –

+1

Не работает и имеет ошибки - это две разные вещи. Это разрешает сообщение об ошибке? Если это так, вы можете теперь отладить функцию и узнать, что мешает ей работать. – Gil

Смежные вопросы