2015-08-10 6 views
10

Ich weiß, dass dies ein paar Mal auf S.O. gefragt wird.SyntaxError: erwarteter Ausdruck, bekam '<', was bedeutet das?

aber keine der Antworten scheinen meine Situation zu entsprechen. Also, ich habe eine grundlegende HTML-Seite, die versucht, eine externe JS zu verwenden. Die JS-Datei versucht, den Inhalt eines im HTML-Code definierten Absatzes bei einem Klick zu ändern, scheint aber nicht zu funktionieren.

Ich sehe die folgenden Fehler in der Konsole:

1) Syntax: erwartete Ausdruck erwartet, '<'

2) Reference: Veränderung ist nicht definiert

JSFiddle genaue Quelle zeigt (ausgenommen? dass &-Tags werden als jsfiddle entfernt - http://jsfiddle.net/p9ko4yde/

HTML-Code:

<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-Code:

<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> 

Dateistruktur ist wie folgt: enter image description here

+0

dies auch, wenn eine serverseitige Skriptfehler passieren kann, und einige HTML-Dumps, aber tut dies in einem eingebetteten Kontext –

Antwort

16

Sie brauchen nicht die <script>-Tags, wenn sie in einer externen JS-Datei. Verwenden Sie diese Tags, um ein Skript nur in HTML einzubetten.

+2

Außerdem werden alle HTML-Tags innerhalb js-Datei sind illegal. – hindmost

2

In einer js-Datei, Sie verwenden, um die HTML nicht zu erklären, dass es sich um eine js-Datei. So können Sie das Script-Tag in myScript fallen lassen und es so ändern:

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

Die Syntaxfehler ist, weil Sie <script> Tags in Ihrer JS-Datei haben. Wenn Sie JavaScript in eine eigene Datei einfügen, müssen Sie es nicht mit Skript-Tags umgeben. das ist HTML und das ist eine JavaScript-Datei.

Der Referenzfehler tritt auf, weil die JS-Datei aufgrund des Syntaxfehlers nicht korrekt ausgeführt wird und daher die Änderungsfunktion nie erstellt wurde. Das Beheben des Syntaxfehlers sollte dies ebenfalls beheben.