JavaScript - externe JS onmoueover Verwaltung
jsnewbie
- javascript
0 Felix Riesterer0 jsnewbie
0 steckl0 jsnewbie
1 molily
Hi,
fange gerade mal mit JavaScrip an, etwas herumzuspielen.
Ich binde eine externe JS-Datei folgendermaßen in mein XHTML-Dokument ein:
<script src="js.js" type="text/javascript" />
Jedoch scheint hier irgendetwas nicht zu stimmen zumindest wird dadurch das Syntaxhighlighting durcheinander gebracht wie sonst nur bei einem Fehler.
Wo ist hier der Fehler?
Des Weiteren steht in dieser externen js folgendes:
window.onload = Init;
function Init()
{
document.getElementById('container').onlick = alert('ja');
}
Wenn ich nun das Dokument aufrufe, wird mir sofort ja ausgegeben und wenn ich auf den container Klicke passiert garnix. Wo ist mein Denkfehler?
Wie kann ich mehrere onclick-Funktionen komfortabel verwalten. Sprich ich möchte dynamisch Aktionen einem Event hinzufügen können.
greets
Lieber jsnewbie,
Wo ist hier der Fehler?
[...]
window.onload = Init;
wie man den Fehler umschiffen kann, habe ich hier beschrieben: Ein mit anderen Scripten kompatibler Autostart (später wohl hier)
Liebe Grüße,
Felix Riesterer.
Hi,
wie man den Fehler umschiffen kann, habe ich hier beschrieben: Ein mit anderen Scripten kompatibler Autostart (später wohl hier)
Danke für den Ansatz. Aber dann muss ich ja immer window.onload vorher "retten". Gibt es eine Lösung, dass eine zweite Funktion irgendwie das handelt?
Und warum geht mein onclick-alert nicht. Habe ich irgendwas falsch definiert?
Oder muss ich diesen außerhalb der Init-Funktion definieren?
document.getElementById('container').onlick = alert('ja');
greets
Lieber jsnewbie,
Dein Nickname hier enthält "new", und bezeichnet Dich als einen Neuling. Genau für solche Neulinge ist der verlinkte Artikel geschrieben. Du darfst gerne tiefer in den Artikel hineinlesen, um vielleicht noch mehr zu verstehen, als unmittelbar an der angegebenen Stelle... ;-)
Du musst natürlich nicht, aber je mehr Du liest, desto mehr solltest Du Deine bisherigen Ansätze verbessern können - und wie dort schon geschrieben steht, musst Du den Artikel nicht komplett durcharbeiten, denn auch Teile daraus helfen Dir weiter, wenn Du es nur versuchst!
Liebe Grüße,
Felix Riesterer.
Moin.
Danke für den Ansatz. Aber dann muss ich ja immer window.onload vorher "retten". Gibt es eine Lösung, dass eine zweite Funktion irgendwie das handelt?
Ja, mit addEventListener bzw. attachEvent für den IE.
Ich hatte mit mal eine Hilfsfunktion geschrieben, die mir DOMContentLoaded simuliert, das im Gegensatz zu window.onload bereits feuert, wenn das DOM vollständig geparst ist, und nicht erst, wenn alle externen Ressource (Bilder,...) geladen sind.
Bei meiner Lösung muss das oben verlinkte Skript eingebunden werden; danach können Funktionen per document.onReady(func1, func2, ...)
registriert werden.
Christoph
Hi,
Ich binde eine externe JS-Datei folgendermaßen in mein XHTML-Dokument ein:
<script src="js.js" type="text/javascript" />
Jedoch scheint hier irgendetwas nicht zu stimmen zumindest wird dadurch das Syntaxhighlighting durcheinander gebracht wie sonst nur bei einem Fehler.
Wo ist hier der Fehler?
Laut Selfhtml brauchst du auch noch ein schließendes Tag (</script>).
Ich vermute mal, dass es auch bei XHTML so ist.
Des Weiteren steht in dieser externen js folgendes:
window.onload = Init;
function Init()
{
document.getElementById('container').onlick = alert('ja');
Beim lecken über das Element? Dazu benötigst du aber dann wohl einen Touchscreen ;-)
*SCNR*
Du hast ein 'c' bei onclick vergessen.
}
Wenn ich nun das Dokument aufrufe, wird mir sofort ja ausgegeben und wenn ich auf den container Klicke passiert garnix. Wo ist mein Denkfehler?
Ich glaube du musst eine Funktionsreferenz an onclick übergeben. So wie du an window.onload eine Referenz auf Init() übergibst.
Momentan speicherst du in das attribut onlick den Returnwert von alert('ja').
Du kannst auch sowas in der Art verwenden: ...onclick = function { alert('ja') }
Die genaue Syntax habe ich aber gerade nicht im Kopf.
mfG,
steckl
Hi,
Laut Selfhtml brauchst du auch noch ein schließendes Tag (</script>).
Aber ich habe ja geschlossen durch <script ... />
Du hast ein 'c' bei onclick vergessen.
Chrmchrm.
Ich glaube du musst eine Funktionsreferenz an onclick übergeben. So wie du an window.onload eine Referenz auf Init() übergibst.
Momentan speicherst du in das attribut onlick den Returnwert von alert('ja').Du kannst auch sowas in der Art verwenden: ...onclick = function { alert('ja') }
Die genaue Syntax habe ich aber gerade nicht im Kopf.
Das klingt gut. Mal gucken ob ich was finde.
greets
Lieber jsnewbie,
Aber ich habe ja geschlossen durch <script ... />
was hast Du??? <tag />
beschreibt ein inhaltsleeres Element, so wie man das bei <br /> oder <img /> braucht. <script /> ist dasselbe wie <script></script>. Geschlossen wird da nix, eher auto-geschlossen. Und dass der IE mit <script src="..." type="text/javascript" />
böse scheitert, ist der Grund, warum man in XHTML diese an sich sehr vernünftige Schreibweise durch die umständlichere längere ersetzen _muss_.
Liebe Grüße,
Felix Riesterer.
Hi,
warum man in XHTML diese an sich sehr vernünftige Schreibweise durch die umständlichere längere ersetzen _muss_.
Ok also prinzipiell würde es laut XHTML funktionieren und vernünftig sein bloß manch Browser scheitert?
Gruß
Lieber jsnewbie,
Ok also prinzipiell würde es laut XHTML funktionieren und vernünftig sein bloß manch Browser scheitert?
der IE scheitert. Wegen ihm muss man <script ...></script> notieren, anstatt das mit <script .../> kürzer zu schreiben.
Liebe Grüße,
Felix Riesterer.
Hi,
Ich glaube du musst eine Funktionsreferenz an onclick übergeben. So wie du an window.onload eine Referenz auf Init() übergibst.
Momentan speicherst du in das attribut onlick den Returnwert von alert('ja').Du kannst auch sowas in der Art verwenden: ...onclick = function { alert('ja') }
Die genaue Syntax habe ich aber gerade nicht im Kopf.Das klingt gut. Mal gucken ob ich was finde.
Das Stichwort lautet "anonyme Funktion".
Hier ist ein Link dazu.
mfG,
steckl
Hallo,
Ich binde eine externe JS-Datei folgendermaßen in mein XHTML-Dokument ein:
<script src="js.js" type="text/javascript" />
Das ist gültige XML-Syntax, aber du verkaufst dein XHTML-Dokument höchstwahrscheinlich als HTML (MIME-Typ text/html) an die Browser. Deshalb wird das Dokument nicht gemäß XML verarbeitet, sondern die Browser parsen den Code mit ihren jeweiligen HTML-Parsern. Und wenn die auf so ein XML-Konstrukt treffen, dann reagieren sie unterschiedlich. (Das hat auch damit zu tun, dass sie generell script-Elemente unterschiedlich parsen.)
Jedenfalls erkennen sie obigen Code nicht als ein ganzes script-Element an, also ein geschlossenes, sondern bloß als Start-Tag. Der weitere Code wird dann je nach Browser erstmal als Inhalt dieses script-Elements angesehen.
Generell gilt daher die Richtlinie, dass alle Elemente, die in HTML nicht als inhaltsleer definiert sind (wie br, meta, img usw.), in HTML-kompatiblem XHTML immer mit Start- und End-Tag notiert werden. Auch wenn dazwischen nichts steht. Also:
<script type="text/javascript" src="bla.js"></script>
Mathias