Sven Rautenberg: OnMouseOver in NS 4.7 funzt nicht

Beitrag lesen

Moin!

if (document.images[deinbild])
{
//  bildtausch traditionell
}
else if (document.layers[layerid].document.images[deinbild])
{
// bildtausch NS4
}

Bedeutet denn " if (document.images[deinbild]) " eine abfrage, ob es dieses objekt gibt?

Exakt. Wenns das nicht gibt, wird garnicht erst weiter versucht, damit zu arbeiten. Es wird dann nicht nur nichts gemacht, sondern auch keine Fehlermeldung generiert. Sehr praktisch für "Zusatznutzen"-Javascripte, die für das Funktionieren der Seite nicht lebenswichtig sind. Aber auch lebenswichtige Javascripte (wenn man dumm genug war, sie einzubauen) kann man auf diese Weise etwas anwenderfreundlicher machen, weil eben keine Fehlermeldung aufgeht, sondern höchstens ein eigenes alert().

wenn ich erst mal versuche den Effekt im NS 4 zum laufen zu bringen, kann ich mir das if und else if ja erst mal sparen, oder?

Könntest du. Aber warum kleckern? Lieber gleich klotzen! Gehen muß es letztendlich ja in allen Browsern.

Ich habe es so versucht:

function Bildwechsel(Bildnr,Bildobjekt) {
document.layers[tabelle].document.images[Bildnr].src = Bildobjekt.src;
}

Das ist im Prinzip richtig. Aber eben nur im Prinzip.

Zuerst mal eine Schönheitskorrektur: Wenn du Bilder ansprechen willst, dann gib ihnen einen Namen: <img name="bild01" ...> Damit mußt du dann beim Funktionsaufruf nicht mehr Bildnummern zählen, sondern kannst einfach den Namen übergeben. Das macht die Dinge wesentlich einfacher, vor allem bei nachträglichen Änderungen. Es reicht ja schon, wenn im Quelltext davor ein neues Bild hinzukommt.

Und dann:
document.layers[tabelle]
                ^^^^^^^
So wie das zur Zeit dasteht, ist tabelle eine Variable. Das _ist_ sie aber nicht, sondern gemeint ist die Zeichenkette "tabelle". Also sollte es auch so geschrieben werden:
document.layers["tabelle"]

Wenn du schlau bist und verschiedene Layer mit zu wechselnden Bildern hast, übergibst du diesen Wert auch an deine Bildwechselfunktion.

Ok, aktueller Stand bis hierher (ich bastel mal meine und deine Funktion zusammen:
function Bildwechsel(Bildnr,Bildobjekt)
{
  if (document.images[Bildnr])
  {
    //  bildtausch traditionell
  }
  else if (document.layers["tabelle"].document.images[Bildnr])
  {
    document.layers["tabelle"].document.images[Bildnr].src = Bildobjekt.src;
  }
}

Und der Aufruf:
<a href="index.htm"
  onmouseover="Bildwechsel('bild03',Highlight3);"
  onmouseout="Bildwechsel('bild03',Normal3);">
<img src="ein.gif" name="bild03" width height alt=""></a>

Die Veränderung der Statuszeile hab' ich mal einfach wieder ausgebaut. 'Home' sollte mit Sicherheit schon in der Grafik stehen (dann braucht man das nicht noch mal zu wiederholen), im Netscape 6 und durch Webwasher kann man sowas rausfiltern und es wird generell nicht gern gesehen, in der Statuszeile rumzupfuschen. Also laß es lieber sein.

Was noch fehlt: "// bildtausch traditionell"
Und das ist schnell gemacht:

document.images[Bildnr].src = Bildobjekt.src;

- Sven Rautenberg