OnMouseOver
Micky
- javascript
Hi,
ich habe ein Script, mit welchem ich ein "OnMouseOver" erzeuge. Das funktioniert auch soweit ohne Probleme. Wenn ich jedoch VOR das Bild, welches bei einem MouseOver geändert werden soll, ein weiteres Bild einfüge (das aber konstant bleiben soll), wird meine Seite total durcheinander geschmissen.
Meine Frage also nun: Warum bezieht sich das JavaScript auf ein Bild, welches gar nicht mit eingebungen ist. Ich habe ihm doch gar keine OnMouseOver Befehle erteilt. Was muss ich also machen, damit das erste Bild immer konstant bleibt???
Hier das zugehörige Script:
Das Java Script: (funktioniert ohne Probleme)
<script language="JavaScript">
usual1 = new Image();
usual1.src = "image1.gif";
over1 = new Image();
over1.src = "image2.gif";
function change(Bildnr,Bildobjekt)
{
window.document.images[Bildnr].src = Bildobjekt.src;
}
</script>
der <body> Tag
<img src="../shampoo.gif" width="646" height="41" alt=""> --> Das normale Bild, welches sich verändert wenn ich über das OnMouseOver Bild fahre, aber eigentlich nicht soll.
<img src="botanic_1_40.gif" width="64" height="142" alt="Botanic 1" onmouseover="change(0,over1);" onmouseout="change(0,usual1"> --> Das Bild soll sich ändern!
Wer kann helfen
Hallo Mikcy,
<script language="JavaScript">
Hier fehlt die type-Angabe.
function change(Bildnr,Bildobjekt)
{
window.document.images[Bildnr].src = Bildobjekt.src;
}
Ah, das gute Beispiel aus SelfHTML, wenn auch schnell die Funktion sowue
die Bildnamen umgetauft wurden ;)
Aber wenn du schon das Beispiel verwendest, warum liest du dann nicht die
Erläuterung genau durch? Der letzte Absatz ("Beim Aufruf von...") sollte
dich besonders interessieren.
Grüße
David
Hi,
ich habe ein Script, mit welchem ich ein "OnMouseOver" erzeuge.
Du erzeugst einen Event-Handler?
Das funktioniert auch soweit ohne Probleme. Wenn ich jedoch VOR das Bild, welches bei einem MouseOver geändert werden soll, ein weiteres Bild einfüge (das aber konstant bleiben soll), wird meine Seite total durcheinander geschmissen.
Natürlich, Du referenzierst ja auch über die Bildnummer.
Meine Frage also nun: Warum bezieht sich das JavaScript auf ein Bild, welches gar nicht mit eingebungen ist.
Es _ist_ eingebunden - das hast Du selbst gesagt. Du hast das Bild eingefügt.
Ich habe ihm doch gar keine OnMouseOver Befehle erteilt.
Das ist völlig egal. Es existiert nicht der geringste kausale Zusammenhang zwischen Aufruf"ort" und durchgeführter Aktion.
Was muss ich also machen, damit das erste Bild immer konstant bleibt???
Eben dieses Bild referenzieren, nicht irgendein anderes.
<script language="JavaScript">
ERROR: Required attribute "type" missing.
usual1 = new Image();
Prüfe vorher, ob document.images überhaupt bekannt ist.
Cheatah
Hallo,
ich möchte Dich auf ein paar grundsätzliche formale Fehler aufmerksam machen, wenn Du gestattest:
1. Statt <script language="JavaScript"> solltest Du stets <script type="text/javascript"> notieren!
2. html-Attribute sollte man stets klein schreiben, also nie OnMouseOver wie im Titel dieses Beitrags, sondern stets onmoueover, wie Du es im Quellkode ja auch richtig gemacht hast.
3. Elemente wie img oder br, die kein Schlusselement -- z. B. </p> -- haben, notiert man mit einem Schrägstrich vor der letzten Klammer: Beispiele: <img src="..." alt="..." /> oder <br />
Ich hoffe ich war nicht zu pingelig.
Heiner
Hi,
- Statt <script language="JavaScript"> solltest Du stets <script type="text/javascript"> notieren!
ja. Das language-Attribut ist optional, das type-Attribut jedoch required.
- html-Attribute sollte man stets klein schreiben, also nie OnMouseOver wie im Titel dieses Beitrags, sondern stets onmoueover, wie Du es im Quellkode ja auch richtig gemacht hast.
Darüber kann man streiten. Gerade bei Event-Handlern halte ich Majuskel _innerhalb_ des Attributnamens für sinnvoll, weil übersichtlicher.
- Elemente wie img oder br, die kein Schlusselement -- z. B. </p> -- haben, notiert man mit einem Schrägstrich vor der letzten Klammer: Beispiele: <img src="..." alt="..." /> oder <br />
Dieser Tipp ist unter Umständen (sprich: höchstwahrscheinlich) falsch. Bei XHTML ist jener implizite End-Tag Pflicht, bei HTML jedoch existieren Tags (z.B. <img> und <br>), deren end-Tag forbidden ist.
Cheatah
Darüber kann man streiten. Gerade bei Event-Handlern halte ich Majuskel _innerhalb_ des Attributnamens für sinnvoll, weil übersichtlicher.
In xhtml _muss_ man alles klein schreiben, das gilt übrigens auch für Elementnamen!
Dieser Tipp ist unter Umständen (sprich: höchstwahrscheinlich) falsch. Bei XHTML ist jener implizite End-Tag Pflicht, bei HTML jedoch existieren Tags (z.B. <img> und <br>), deren end-Tag forbidden ist.
.../> steht nicht für ein End-Element! Es deutet an, dass das Element nicht "schließbar" ist. Daher ist der Schrägstrich in xhtml z. B. sogar Pflicht!
Heiner
Hi,
In xhtml _muss_ man alles klein schreiben, das gilt übrigens auch für Elementnamen!
dann verstehe ich nicht, warum Du "sollte" geschrieben hast. Entweder meinst Du XHTML, dann hättest Du "muss" sagen müssen, oder Du meinst HTML, dann ist es eine Meinungsfrage.
.../> steht nicht für ein End-Element! Es deutet an, dass das Element nicht "schließbar" ist.
Zugegeben, da hast Du Recht.
Daher ist der Schrägstrich in xhtml z. B. sogar Pflicht!
Ja, das sagte ich. Ich halte es jedoch für einen schwerwiegenden Fehler, ohne anderslautende Aussage von XHTML auszugehen - und für einen ebensolchen, innerhalb von HTML von dem abzuweichen, was erst in anderen Sprachen einen Sinn ergibt. Wer XHTML schreiben möchte, soll dies tun; wer bei HTML bleibt, soll seinen Code auch nach HTML aussehen lassen.
Cheatah
dann verstehe ich nicht, warum Du "sollte" geschrieben hast. Entweder meinst Du XHTML, dann hättest Du "muss" sagen müssen, oder Du meinst HTML, dann ist es eine Meinungsfrage.
Nagut, "sollte" sollte eine Mischung aus dem "muss" in xhtml und "könnte" in html ausdrücken. Für mich empfiehlt es sich in html auch alles klein zu schreiben, weil man eh irgendwann auf xhtml umsteigen wird, wenn man den Wert von xhtml erkannt hat.
html lässt ja viele Freiheiten. Warum sich dann nicht schon auf xhtml zubewegen?
Heiner
Hallo,
Das Java Script: (funktioniert ohne Probleme)
<script language="JavaScript">
usual1 = new Image();
usual1.src = "image1.gif";
over1 = new Image();
over1.src = "image2.gif";
function change(Bildnr,Bildobjekt)
{
window.document.images[Bildnr].src = Bildobjekt.src;
}
</script>der <body> Tag
<img src="../shampoo.gif" width="646" height="41" alt=""> --> Das normale Bild, welches sich verändert wenn ich über das OnMouseOver Bild fahre, aber eigentlich nicht soll.<img src="botanic_1_40.gif" width="64" height="142" alt="Botanic 1" onmouseover="change(0,over1);" onmouseout="change(0,usual1"> --> Das Bild soll sich ändern!
Da du mit Indexnummern arbeitest, ist es nicht verwunderlich, daß sich das erste Bild ändert.
Ändere die 0 in 1 und es wird gehen.
Indexnummern werden in der Reihenfolge des Auftreten des Objektes im Quelltext vergeben, also hat dein erstes Bild die Indexnummer "0".
Desweiteren wird in deinem Fall auch das erste Bild beim Mouseout gegen das zweite Bild ausgetauscht werden, stimmt's?
Kurt