2017-05-13 15 views
0

Also, ich habe diesen wirklich seltsamen Fehler. Ich versuche, eine Verbindung zu einer externen JS-Datei aus meiner HTML-Datei herzustellen. Was auch immer ich mache, die Funktionen in dieser externen JS-Datei können nicht aufgerufen werden.Externe JavaScript-Datei funktioniert nicht - ReferenceError

Das ist mein HTML-Code:

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <script src="cookies.js"></script> 
     <script type="text/javascript"> 
      //some other JavaScript... 
      function test() { 
       extTest(); 
      } 
     </script> 
    </head> 
    <body> 
     <button type="button" onclick="test();">Test</button> 
    </body> 
</html> 

Und das ist meine externe JavaScript-Datei: (. Ich beide Codeblöcke vereinfacht nur die notwendigen Leitungen enthalten)

function extTest() { 
    alert("Hello world"); 
} 

Also, wenn ich auf die Schaltfläche klicke, sollte die Funktion extTest() ein Popup öffnen, das "Hallo Welt" sagt. Aber extTest() wird nicht aufgerufen. Stattdessen erhalte ich einen ReferenceError, der sagt "extTest ist nicht definiert". Das Problem tritt sowohl in Firefox als auch in Chrome und Edge auf.

Beide Dateien (HTML und JS) befinden sich im selben Verzeichnis auf meinem Laptop. Ich habe versucht, mit der JS-Datei mit einem relativen Link (wie im obigen Code gezeigt), eine relative Verbindung mit. für das aktuelle Verzeichnis (./cookies.js) und einen absoluten Link (/ C:/...). Ich habe auch versucht, die JS-Datei in einen eigenen Ordner zu stellen und zu verlinken, es hat nicht funktioniert.

Ich würde mich eher als Anfänger betrachten, wenn es um JavaScript geht, aber ich habe bereits externe JS-Dateien verwendet und es hat funktioniert. Wissen Sie, woher dieser Fehler kommt? Ich meine, ich könnte den gesamten Code aus der externen Datei in das Skript in der HTML-Datei einfügen, aber ich bin wirklich neugierig, warum es nicht anders geht.

Alle Hinweise werden sehr geschätzt, danke im Voraus.

+0

Sind dies die tatsächlichen Inhalte der Dateien, mit denen Sie das Problem reproduzieren können? I.e. Sind Sie sicher, dass das Problem nicht in den Teilen liegt, die Sie hier weggelassen haben? Erhalten Sie andere Fehler in der Konsole? Wenn Sie nach Netzwerkanforderungen suchen, ist Ihre js-Datei tatsächlich geladen? – jcaron

+0

Schauen Sie auf den Netzwerk-Tab Ihres Browsers (im Entwickler-Modus) und stellen Sie sicher, dass die externe Javascript-Datei geladen ist, bevor Sie die Funktion aufrufen –

Antwort

0

Sie einfach so verwenden können, brauchen Sie nicht eine andere Funktion nach innen zu machen, weil ich nehme an, Sie den Code js machen in cookies.js

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <script src="cookies.js"></script> 
    </head> 
    <body> 
     <button type="button" onclick="extTest();">Test</button> 
    </body> 
</html> 
+0

Ich habe extTest von einem anderen Funktionstest aufgerufen, weil ich einen Haltepunkt in der Zeile platzieren wollte kann mehr vom Debugger erfahren. – casmatix

0

Ich würde sagen, am Anfang sieht es aus wie du bist den Funktionstest deklarieren, aber nicht aufrufen. Versuchen Sie, eine Zeile darunter zu setzen: test();

Eine Frage, wenn Sie auf ähnliche Weise Ihre extTest-Funktion am unteren Rand Ihrer externen .js-Datei aufrufen, mit der ich wieder eine Zeile mit dem Wert extTest(); Funktioniert es wie gewünscht? Wenn dies nicht der Fall ist, könnte ein anderes Problem vorliegen.

0

Ich habe absolut keine Ahnung warum, aber anscheinend funktionieren die Funktionen in der externen Datei jetzt. Danke für deine Antworten trotzdem.

Verwandte Themen