Christian Seiler: onmouseover in xsl funktioniert nicht

Beitrag lesen

Hallo!

Nichts für ungut, aber könntest Du bitte nächstes Mal das XSLT auf das Wesentliche reduzieren? Das ganze VBScript-Zeug ist nämlich absolut nicht relevant für das Problem.

Du hast in Deiner Ausgabe gleich zwei Probleme:

  1. Wie ich bereits sagte, ist img_print.src = '...' der falsche Weg, um Bilder anzusprechen. Korrekt wäre document.images['img_print'].src = '...';

  2. Aber selbst das wird Dir nichts nützen. Denn: Du generierst viele solcher Bilder, nicht nur eines. Dann musst Du natürlich die Bilder auch eindeutig identifizeren können, um in JS gerade das richtige Bild austauschen zu können.

Also:

Unter

<xsl:variable name="curr_version">  
<xsl:value-of select="Version"/>  
</xsl:variable>

setze noch ein:

<xsl:variable name="curr_version_id" select="concat('img_print_', translate($curr_version, '.', '_'))" />

Das erzeugt Dir eine Variable $curr_version_id, die einen eindeutigen Namen für Dein Bild enthält, also z.B. img_print_D2_31_1 (das translate ersetzt den '.', der in name="..." eher ungünstig ist, durch einen '_').

Dann setzt Du das name-Attribut des Bildes entsprechend und nutzt den Wert auch in Deinem generierten Javascript:

<a onmouseover="document.images['{$curr_version_id}'].src='.../printer_grey.gif';" target="drucken" href="versionen/{$curr_version}/print.xml" onmouseout="document.images['{$curr_version_id}'].src='.../printer_white.gif';">  
  <img name="{$curr_version_id}" src=".../printer_white.gif" height="14" border="0" alt="Drucken" />  
</a>

Dann sollte Dein Mouseover auch funktionieren.

Viele Grüße,
Christian

PS: Übrigens: <xsl:variable name="curr_version" select="string(Version)" /> ist in meinen Augen viel sinnvoller, als Deine Konstruktion mit variable + value-of. Nur als kleine Anmerkung.