Felix Riesterer: mouseover und mouseout

Beitrag lesen

Lieber juppi,

wie schon erwähnt Du brauchst ein Script, welches alle Deine <img>-Elemente der Reihe nach prüft, um ihnen die passenden Eventhandler zu verpassen. Dazu bietet es sich an, dass Du dem jeweiligen <img>-Element irgendwie mit HTML-Mitteln die Hovergrafik zuordnest, oder aber Du erfindest eine Art Dateinamenskonvention.

Man könnte das sehr selten verwendete "longdescr"-Attribut missbrauchen(!), um die Hovergrafik zuzuordnen:

<img src="bild.jpg" longdescr="hovergrafik:bild_.jpg" alt="" />

Das würde aber sehr viel Extra-Code im HTML verursachen. Besser fände ich eine selbst festgelegte Konvention, dass jede Hovergrafik das Präfix "hover_" bekommt: <img src="bild.jpg" alt="" /> würde beim Hovern dann zu <img src="hover_bild.jpg" alt="" />.

So. Jetzt brauchst Du nur noch eine Schleife, die Dir alle <img>-Elemente findet (oder Du nimmst gleich document.images) und mit Deinen passenden Eventhandlern ausrüstet.

Dabei solltest Du aber bedenken, dass vielleicht nicht restlos alle <img>-Elemente Deiner Seite einen solchen Hover-Effekt bekommen sollten. Die auszuschließenden Elemente könnten eine passende Klasse zugewiesen bekommen, oder besser nicht die auszuschließenden, sondern die zu hovernden.

<img src="bild.jpg" alt="" class="has-hover-effect" />

In JavaScript kannst Du das so prüfen:

for (var i=0; i < document.images.length; i++) {  
    if (document.images[i].className  
        && document.images[i].className.match(/\bhas-hover-effect\b/)  
    ) {  
        document.images[i].mouseover = function () {  
            this.src = this.src.replace(/(\/)+$/ "hover_$1");  
        };  
        document.images[i].mouseout = function () {  
            this.src = this.src.replace(/hover_(\/)+$/ "$1");  
        };  
    }  
}

Selbstverständlich habe ich obigen Code nicht getestet, aber Du kannst es ja ausprobieren und aus meinen möglichen Fehlern lernen. ;-)

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)