JavaScript in HTML aufrufen?
Hallo zusammen
Ich brauche eure Hilfe, weil ich noch nicht viel mit JS gemacht habe.
Ich habe bis jetzt immer mein <script>-Tag mit Funktionen und Variablen in der HTML-Datei gehabt - hat immer funktioniert.
Jetzt will ich das <script>-Tag in eine eigene Datei ablegen.
Um das zu verschachteln und projektorientiert zu machen, dass man nicht für jede Seite die Funktionsänderung vornehmen muss.
Deswegen hab ich mit "<script src="/fileadmin/public/js/myScript.js"></script>" die JS-Datei in die HTML-Datei implementiert.
Mein Problem: Die Events führen nicht mehr aus.
Liegt das an daran, dass document.getElementById sich die ID aus dem internen dokument sucht?
Wie kriege ich, dass die ID von der HTML-Datei angesprochen werden?
Vielen Lieben Dank und liebe Grüße
2 Antworten
Da in einem Browser HTML-Dokumente Zeile für Zeile interpretiert werden, spielt es eine Rolle, wann, wo und/oder wie Scripte eingebunden/ausgeführt werden. Wenn dein Script an der falschen Stelle steht, wird dieses ggf. schon von deinem Browser ausgeführt, obwohl dieser die Elemente noch nicht kennt (interpretiert hat).
Je nach Programmlogik musst du entscheiden, wann das Script geladen und ausgeführt werden kann oder ausgeführt werden soll. Das gilt für externe Scripte als auch für eigene Funktionen und der Gleichen. In der Regel wird JavaScript aber am Ende des <body> Elements vor dem schließenden <body> Tag eingebunden.
Neben dieser Herangehensweise gibt es Attribute für das <script> tag, mit denen festgelegt werden kann, ob Scripte asynchron (async) oder verzögert (defer) geladen werden. Das async-Attribut wird z.B. bei Thirt Party Scripten verwendet, während mit dem defer-Attribut das laden und ausführen hinten angestellt wird.
// script wird zum schluss geladen
<script src="path/app.js"></script>
</body>
// paralleles (asynchrones)laden
<script src="path/app.js" async></script>
// laden und ausführen verschieben
<script src="path/app.js" defer></script>
es kommt darauf an wo du wann was machst , wenn du ein script im header hast und der DOM noch gar nicht existiert du aber ein Element haben willst, wird das nix .
dafür gibt es z.b. die
<body onload="hier deine funktion">
oder im javascript mit window.onload ... arbeiten .
funktion damit du javascript auch erst ausführst wenn der DOM vollständig existiert .
schau hier
https://www.w3schools.com/jsref/event_onload.asp
oder hier
https://developer.mozilla.org/de/docs/Web/API/GlobalEventHandlers/onload
Hätte mal erwähnen sollen, dass ich in der HTML-Datei ein onclick-Event mit besagter Funktion habe.
Wie kann ich javascript die Element-IDs vermitteln, wenn die Dokumente unabhängig von einander sind.
Lösung sind wahrscheinlich wirklich Übergabeparameter
ohne code weiss das doch keiner .
uploade dein code entwder auf https://jsfiddle.net/ oder https://pastebin.com/
dieses gesabbel und beschreibung geht hier allen auf den nerft . wenn du ein konretes problem hast, dann mach auch ein konkretes problem daraus . so denkt und ließ jeder was anders . und beim programmieren sind die wege unendlich .
es gibt auch das event target . aber das hilft auch nur bei bestimmten problemen , bei anderen wieder nicht .
Vielen Dank für die schnelle Antwort.
Werde das Ganze mal ausprobieren!
Script ist im Header implementiert und Function wird im Body aufgerufen