2015-08-10 5 views
10

Я знаю, что это задают несколько раз на S.O.SyntaxError: ожидаемое выражение, получило '<', что это значит?

, но ни один из ответов не соответствует моей ситуации. Итак, у меня есть базовая страница 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> 

Структура файла, как показано ниже: enter image description here

+0

это также может произойти, когда скрипт на стороне сервера выдает ошибки и выгружает некоторый HTML, но делает это во встроенном контексте. –

ответ

16

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

+2

Кроме того, любые HTML-теги внутри .js-файла являются незаконными. – hindmost

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

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

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

Смежные вопросы