语法错误:期望表达式,得到“<”,这是什么意思?

14

我知道这个问题在S.O.上被问了几次,但是没有一个答案似乎符合我的情况。所以,我有一个基本的Html页面,试图使用外部JS。JS文件尝试在按下按钮时更改在HTML中定义的段落的内容,但似乎不起作用。

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

1)SyntaxError:expected expression,got '<'

2)ReferenceError:change未定义

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>

文件结构如下:enter image description here


1
这种情况通常发生在服务器端脚本出错并且以嵌入式上下文方式输出一些HTML时。 - Toni Leigh
4个回答

19
你不需要在外部的 .js 文件中使用 <script> 标签。只有在 HTML 中嵌入脚本时才需要使用这些标签。

2
此外,在 .js 文件中任何 HTML 标签都是非法的。 - hindmost

4
语法错误是因为您在JS文件中有

2
有时候,当Javascript引用的文件不存在时,会出现这个错误。确保文件名正确且文件已经存在。我知道你的问题已经解决了,但也许这个答案可以帮到其他人 :)

2
在一个js文件中,你不需要使用HTML来声明它是一个js文件。因此,你可以在myScript中省略script标签,并将其更改为以下内容:
function change(){
    var number = document.getElementById('number').innerHTML;
    if(number == '1'){
        document.getElementById('number').innerHTML='2';
    }
    else{
        document.getElementById('number').innerHTML='1';
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接