我知道有几次在S.O。
上被问过但没有一个答案似乎符合我的情况。所以,我有一个基本的Html页面,试图使用外部JS。 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>
答案 0 :(得分:19)
在外部.js文件中,您不需要<script>
标记。使用这些标记仅在HTML中嵌入脚本。
答案 1 :(得分:3)
语法错误是因为您的JS文件中有<script>
个标记。当你把JavaScript放在自己的文件中时,你不需要用脚本标签包围它;那个HTML,这是一个JavaScript文件。
发生引用错误是因为由于语法错误,JS文件没有正确执行,所以更改函数永远不会被创建 - 修复语法错误也应该解决这个问题。
答案 2 :(得分: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 :(得分:0)
有时,当Javascript引用的文件不存在时会发生此错误。确保文件名正确并且您已准备好文件。我知道你的问题已经解决,但也许这个答案解决了别人的问题:)