Hallo, Marc,
wie mache ich dass wenn ich denselben Button mehr als einmal verwenden moechte? Das scheint naemlich nicht zu funktionieren.
Doch - es spricht nichts dagegen, dieselben Objekte der Klasse (des Typs? ;)) »Image« zu verwenden, um die URLs der Bilder zu speichern.
Mit ein wenig Nachdenken scheint dies mir auch logisch zu sein, da ja immer das ganze Objekt getauscht wird
Nein, es werden keine »Objekte getauscht«. Im Grunde genommen ist das Definieren von Image-Objekten nur notwendig, damit die Highlightgrafiken vorgeladen werden und die normale URL gespeichert bleibt. Wenn man darauf verzichten will, könnte man die src-Eigenschaft des jeweiligen Elementobjekts (welches einen DOM-Knoten repräsentiert oder umgekehrt) auch direkt ändern, indem man ihr eine URL zuweist.
und da dieses Objekt oefter benutzt wird
Das erstellte Objekt selbst bleibt unverändert. Es wird nur die src-Eigenschaft eines Image-Objekts ausgelesen, welches mit den Bildern des Dokuments, welche sich als Image-Objekte unter document.images herumtreiben, nichts direkt zu tun hat.
Diese src-Eigenschaft ist wie gesagt nur eine Zeichenkette, welche auch in einer Variable (einem Variablenobjekt) des Typs String gespeichert sein könnte.
sollten entweder alle Buttons aufleuchten
Nein, es wird immer nur *einem ganz bestimmten* Bildobjekt *des Dokuments* ein neuer src-Wert zugewiesen, welcher einem anderen Objekt entnommen wird, nämlich dem, welches du im Script explizit erstellst.
Wenn du den src-Eigenschaftswert des am Anfang des Script erstellten Image-Objekts änderst, tut sich auf der Seite überhaupt nichts. Zumindest wenn es keine entsprechendes img-Element mit einem name-Attributwert existiert, welches mit dem Objektnamen des Image-Objekts übereinstimmt.
oder die Sache gar nicht mehr funktionieren
Nein. Es müsste zumindest eine Fehlermeldung angezeigt werden, welche du für die Analyse des Problems verwenden solltest.
Letzteres ist der Fall.
Das kann nicht sein. Dann sind deine Beobachtungen nicht präzise genug oder du hast keine detaillierten Untersuchungen angestellt, das heißt die Fehlermeldungen nicht beachtet und ausgewertet.
Muss ich nun um doch noch zum Ziel fuer jeden dieser eigentlich identischen Buttons einen Eintrag machen wie: (...) und so weiter, halt so oft wie ich ihn brauche
Nein, das ist unnötig. Zwei Image-Objekte pro Grafikpaar reicht, egal wie oft diese Grafik im Dokument eingebunden wird. Du musst lediglich jedem img-Element im Dokument ein eindeutiges name-Attribut zuweisen, damit es als Unterobjekt von document auftaucht und du dessen Eigenschaft src verändern kannst.
Oder geht das auch nicht und Ihr habt einen anderen Vorschlag?
Eine abgewandelte Version des Selfhtml-Beispiels:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>Dynamische grafische Buttons</title>
<script type="text/javascript">
var button=new Image();
button.src="button.png";
var buttonh=new Image();
buttonh.src="buttonh.png";
function wechsle (bildname, obj) {
window.document[bildname].src=obj.src;
}
</script>
</head>
<body>
<p><a href="murks.html" onmouseover="wechsle('button_eins', buttonh)" onmouseout="wechsle('button_eins', button)"><img src="button.png" name="button_eins" alt="..." /></a></p>
<p> ... </p>
<p><a href="murks.html" onmouseover="wechsle('button_zwei', buttonh)" onmouseout="wechsle('button_zwei', button)"><img src="button.png" name="button_zwei" alt="..." /></a></p>
</body>
</html>
Über den wechsle()-Funktionsaufuruf in den onmouseover- und onmouseout-Attributen wird im ersten Parameter der name-Attributwert der zu ändernden Grafik übergeben, im zweiten Parameter das (kein img-Element repräsentierendes) Image-Objekt, welches in seiner src-Eigenschaft die neue URL enthält.
Wie du siehst, sind die eingebundenen Bilder und die Hoverbilder gleich (das wolltest du doch...?). Auch ist der zweite Parameter jeweils gleich (das Objekt button beziehungsweise buttonh). Alleinig mit dem ersten Parameter wird auf eine *bestimmte* Grafik mit dem angegebenen name-Attribut verwiesen (die innerhalb des a-Elements). Dadurch wird immer nur die URL einer bestimmten Grafik geändert...
Grüße,
Mathias
Mein Leben, ein Leben ist es kaum, / Ich gehe dahin als wie im Traum.
Wie Schatten huschen die Mensch hin, / Ein Schatten dazwischen ich selber bin.
Und im Herzen tiefe Müdigkeit - / Alles sagt mir: Es ist Zeit ...
(Theodor Fontane, Mein Leben)