Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009
-
23 juin 2009 à 11:09
Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009
-
23 juin 2009 à 18:53
Bonjour à tous,
Je liste en php une série de "titre+petit texte" comme ceci :
Le CSS de blocListe : { blablabla... background-image:url(images/taquetBlanc.jpg); background-repeat:repeat-y; background-position:left; }
La fonction Javascript sur le onmouseover/onmouseout :
function taquet(idObj){
if (!document.getElementById) return;
var o = document.getElementById(idObj).style;
var imgOn = "url(images/taquetRouge.jpg)";
var imgOff = "url(images/taquetBlanc.jpg)"; o.backgroundImage (o.backgroundImage imgOn) ? imgOff : imgOn;
}
Lorsque je survol ma DIV (class="blocListe") une barre verticale rouge, de la hauteur de mon bloc, apparaît calée à gauche.
Mon soucis est que tout fonctionne sur Firefox et IE,
mais sous Safari, la barre passe en rouge lors du survol,
mais ne redevient pas blanche lors du onmouseout... !?!
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 23 juin 2009 à 12:11
<?= a éviter c'est grave déprécié, ne marche que si short_open_tags est actif sur le serveur et n'existera bientot plus...
<?php echo 'bloc'.$i; ?>
après faut voir... ton élément se déclenche... tu as mis un alert() dans ta fonction pour voir s'il te renvoyais quelque chose avec ton getElement... perso je pense que o doit valloir null à vérifier... essaye avec
Mr Z
Messages postés7Date d'inscriptionmercredi 14 juillet 2004StatutMembreDernière intervention15 octobre 2009 23 juin 2009 à 15:03
Oui, j'ai déjà vérifier avec alert();.
(sous Safari) Au départ, lors du premier survol,
l'image change normalement
("url(images/taquetBlanc.jpg)" -> "url(images/taquetRouge.jpg)").
Ensuite, backgroundImage reste bloqué et l'alert renvoie toujours "url(images/taquetRouge.jpg)".
J'ai viré les <?= et remplacé par <? echo
Mais le soucis ne venait pas de là (ceci dit bon à savoir, merci)
J'ai modifié ma fonction Javascript comme cela :
function taquet(obj,over){
if (!document.getElementById) return;
var o = document.getElementById(obj).style;
Et là ça fonctionne sous Safari, si je n'utilise pas le this dans : onmouseover="taquet(this, true)" !
Mais : onmouseover="taquet('<?php echo 'bloc'.$i ?>', true)"
Je vois pas bien la différence ?! Si ce n'est le "over"...
Que j'utilise this + obj.style.backgroundImage
OU <?php echo 'bloc'.$i ?> + document.getElementById(obj).style.backgroundImage
Cela est la même chose. non ?
Par contre, le soucis semble plus venir du système avec le modulo :obj.style.backgroundImage (obj.style.backgroundImage imgOn) ? imgOff : imgOn;OU o.backgroundImage (o.backgroundImage imgOn) ? imgOff : imgOn;
Là dans les deux cas, ça ne fonctionne pas sous Safari.