Hoi-hoi!
Ja, deze code werkt feilloos in Firefox, Chrome, Opera en Safari.
Maar in elk geval in Internet Explorer 7 werkt het bovenstaande niet, als je in de html een relatief pad voor het image gebruikt.
IE7 geeft namelijk het complete pad van het image terug ("http://www.domeintjesnaam.nl/.../pr1.jpg"), en niet het opgegeven relatieve pad. Dan gaat de vergelijking niet op, en gebeurt er niets...
- Test: toggleClick-a.htm
- (IE8 en IE9 niet getest, dus of die het er beter van af brengen, weet ik niet)
Oplossing 1
... is natuurlijk om alle verwijzingen in de functie met absolute paden te doen, dan kan er nooit iets fout gaan. D.w.z. als je niet vergeet dat het altijd het complete pad moet zijn; wat bij een aanpassing over een half haar wel eens uit het geheugen weggezakt kan zijn (of wat vergeten kan worden te melden aan een opvolgende webmaster).
Lijkt me geen duurzame oplossing!
Oplossing 2
Controleren of in de
src van het image de naam van het image wordt aangetroffen, met indexOf(...).
Zowel bij het absolute pad als bij een relatief pad is dat het geval (voor het getoonde image), en dan kan de functie verder:
[JS]<script type="text/javascript">
function veranderPlaatje(img)
{
if (img.src.indexOf('images/handje-up.gif')!=-1)
{
img.src = 'images/handje-down.gif';
}
else
{
img.src = 'images/handje-up.gif';
}
}
</script>[/JS]
Oplossing 3
Je kan er ook een flip-flop van maken met een variabele die om en om aan/uit gezet wordt:
[JS]<script type="text/javascript">
var flipflop=0;
function veranderPlaatje(img)
{
if (flipflop==0)
{
img.src = 'images/handje-down.gif';
flipflop=1;
}
else
{
img.src = 'images/handje-up.gif';
flipflop=0;
}
}
</script>[/JS]
Met vriendelijke groet,
CSShunter
________
PS: Met css kan het niet. Css kan prima gebruikt worden voor een (tijdelijke) image-wissel bij een hover, maar verder ben je op javascript aangewezen: een
onclick is een interactie van de bezoeker en daar is javascript-functionaliteit voor nodig.