无法从HTML调用Javascript类

无法从HTML调用Javascript类,javascript,html,function,web,Javascript,Html,Function,Web,请看下面的代码 TTSScript.js function TTS() { var msg = new SpeechSynthesisUtterance("yohan"); var voices = window.speechSynthesis.getVoices(); this.speakText = function() { window.speechSynthesis.speak(msg); }

请看下面的代码

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>

我对JavaScript不太熟悉,您能告诉我为什么会出现此错误以及如何修复它吗?

声明一个函数后,它的名称将变成一个(本地)保留字。这意味着创建同名变量可能会导致一些问题

我把你的密码换了

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


错误消失了。

我解决了您的问题。:

  • 不要将所有大写名称都用作变量

    var tts=新的tts(); tts.speakText()

  • 正确的发言权在掌握之中

  • var msg=newspeechsynthesisutrance('Yohan');
    
    window.speechSynthesis.speak(msg)这是唯一的错误吗?您的浏览器中是否定义了
    SpeechSynthesisUtterance
    ?欢迎使用js小提琴,在其他情况下,它是一个“为什么这段代码不起作用?”question@TimSeguine:如您所见,我可以调用
    speak()
    函数,没有问题,是的,
    SpeechSynthesisUtterance
    已定义。@因为实际上我看不到这一点。直到现在你才说出来,在你的示例中也没有提到过。JSFIDDLE版本的文章:不是在机器中工作,而是在小提琴中工作。正如我提到的,TTS函数属于不同的脚本,而不是内部JS。不工作和出错是两码事。这是否解决了错误消息?如果是这样,您现在可以调试该函数,并找出是什么原因使其无法工作。
    var TTS = new TTS();
    TTS.speakText();
    
    var tts = new TTS();
    tts.speakText();