SyntaxError: ожидаемое выражение, получило '<', что это значит?

Я знаю, что это задано несколько раз на 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>

Структура файла выглядит следующим образом: введите описание изображения здесь

Ответ 1

Тегам <script> вам не нужны теги во внешнем файле .js. Используйте эти теги для встраивания script только внутри HTML.

Ответ 2

Синтаксическая ошибка связана с тем, что в вашем JS файле есть теги <script>. Когда вы помещаете JavaScript в свой собственный файл, вам не нужно окружать его тегами script; это HTML, и это файл JavaScript.

Исходная ошибка происходит потому, что из-за ошибки синтаксиса JS файл не выполняется правильно, поэтому функция изменения никогда не создавалась - исправление синтаксической ошибки также должно разрешить это.

Ответ 3

В js файле вы не используете HTML, чтобы объявить, что это файл js. Таким образом, вы можете сбросить тег script в myScript и изменить его на это:

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