【问题标题】:SyntaxError: expected expression, got '<', what does that mean?SyntaxError: expected expression, got '<',这是什么意思?
【发布时间】:2015-11-02 18:24:30
【问题描述】:

我知道这在 S.O. 上被问过几次

但似乎没有一个答案符合我的情况。所以,我有一个尝试使用外部 JS 的基本 Html 页面。 JS 文件尝试在单击按钮时更改 HTML 中定义的段落内容,但似乎不起作用。

我在控制台中看到以下错误:

1)SyntaxError: 预期的表达式,得到 '

2)ReferenceError: 未定义更改

JSFiddle 显示确切来源?(除了 & 标签被删除为 jsfiddle - http://jsfiddle.net/p9ko4yde/

HTML 代码:

<h1> Numbers with external script:) </h1>
<p id="number">1</p>
<button type="button" onclick="change()">Toggle between 1 and 2</button>

<script src="myScript.js"></script>



</body>
</html>

JS 代码:

<script type="text/javascript">
    function change(){
        var number = document.getElementById('number').innerHTML;
        if(number == '1'){
            document.getElementById('number').innerHTML='2';
        }
        else{
            document.getElementById('number').innerHTML='1';
        }
    }
</script>

文件结构如下:

【问题讨论】:

  • 这也可能发生在服务器端脚本错误并转储一些 HTML 时,但在嵌入式上下文中这样做

标签: javascript html button external


【解决方案1】:

在外部 .js 文件中不需要 &lt;script&gt; 标记。使用这些标签仅在 HTML 中嵌入脚本。

【讨论】:

  • 此外,.js 文件中的任何 HTML 标签都是非法的。
【解决方案2】:

在 js 文件中,不要使用 HTML 来声明它是 js 文件。因此,您可以将脚本标签放在 myScript 中并将其更改为:

function change(){
    var number = document.getElementById('number').innerHTML;
    if(number == '1'){
        document.getElementById('number').innerHTML='2';
    }
    else{
        document.getElementById('number').innerHTML='1';
    }
}

【讨论】:

    【解决方案3】:

    语法错误是因为您的 JS 文件中有 &lt;script&gt; 标签。当你像这样将 JavaScript 放在它自己的文件中时,你不需要用脚本标签包围它;那是 HTML,这是一个 JavaScript 文件。

    发生引用错误是因为,由于语法错误,JS 文件没有正确执行,因此从未创建更改函数——修复语法错误也应该解决此问题。

    【讨论】:

      【解决方案4】:

      当 Javascript 引用的文件不存在时,有时会发生此错误。确保文件名正确并且文件已就位。我知道您的问题已解决,但也许这个答案可以解决其他人的问题:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 2014-01-15
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 2012-02-15
        • 1970-01-01
        相关资源
        最近更新 更多