[JS] Pb onMouseOver / Out
Résolu
kij_82
Messages postés
4089
Date d'inscription
Statut
Contributeur
Dernière intervention
-
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai actuellement un script javascript sur l'un de mes sites qui me permet de modifier le status "visible" ou "hidden" de DIV sur la page.
En bref voici mes fonctions :
Lorsqu'un utilisateur clique sur une "cellule" (DIV), une autre DIV invisible jusque là apparait (pour faire un effet grisé sur la cellule en question. J'ai donc mis la fonction "selected" (voir plus haut le script) sur l'évênement onClick de la cellule.
Mon probleme est le suivant : sous FF aucun soucis tout fonctionne. Sous IE tout semble fonctionner, seulement j'ai un "parasite" quelque part dans le sens ou des que j'ai cliqué la cellule se grise (la DIV invisible devient visible) et de suite redevient normale ( la DIV invisbile devenu visible redevient visible) sans aucune raison apparente.
Pour débugger j'ai mis une pop-up juste avant le changement de style (voir code). Si bien que lorsque je clique sur un cellule, la popup apparait juste avant de modifier l'état de la cellule. Je décale la popup ainsi apparut en dehors de la fenetre ou j'ai mes cellules, puis clique sur "ok" de la popup d'alert. Et là, miracle, la cellule reste grisée. Par contre lorsque je repasse ma souris sur la fenetre (n'importe ou) ou se trouvent les cellules, la cellule précédemment grisée redevient normal. :s
Quelqun saurait il d'ou cela peut venir ?
Merci beaucoup pour votre aide ^^
J'ai actuellement un script javascript sur l'un de mes sites qui me permet de modifier le status "visible" ou "hidden" de DIV sur la page.
En bref voici mes fonctions :
function onMouseOverOut ( elem, mode ){ document.getElementById(elem).style.visibility = mode; } function updateStatus ( _div, _name, _value ){ var oDiv = document.getElementById(_div); //alert("update status for : [div: "+_div+"] [name: "+_name+"] [value: "+_value+"]"); if ( myTabSector[_name] == 0 ){ // --- Change style changeFunctions(0, _div); alert("coucou"); // popup de test oDiv.style.visibility = "visible"; // --- Update status in sectors array myTabSector[_name] = 1; // --- Update sectors session array opener.addSectorsInSession(_name, _value); } else if ( myTabSector[_name] == 1 ){ // --- Change style changeFunctions(1, _div); oDiv.style.visibility = "hidden"; // --- Update status in sectors array myTabSector[_name] = 0; // --- Update sectors session array opener.removeSectorsInSession(_name, _value); } } function changeFunctions ( status, divName ){ var oDivs = null; var max = 0; if ( divName == "secteur7" ) max = 8; else if ( divName == "secteur9" ) max = 5; if ( max == 0 ) { oDivs = document.getElementsByName(divName); upStat(oDivs[0],status,divName); } else { for ( var i = 1; i <= max; i++) { oDivs = document.getElementsByName(divName+i); upStat(oDivs[0],status,divName); } } } function upStat ( oDiv, status, divName ){ if ( status == 0 ) { oDiv.onmouseover = function(){}; oDiv.onmouseout = function(){}; } else if ( status == 1 ) { oDiv.onmouseover = function(){ onMouseOverOut(divName, "visible"); } oDiv.onmouseout = function(){ onMouseOverOut(divName, "hidden"); } } } function selected ( value, libelle, div ){ // --- Update status of current zone updateStatus(div, libelle, value); }
Lorsqu'un utilisateur clique sur une "cellule" (DIV), une autre DIV invisible jusque là apparait (pour faire un effet grisé sur la cellule en question. J'ai donc mis la fonction "selected" (voir plus haut le script) sur l'évênement onClick de la cellule.
Mon probleme est le suivant : sous FF aucun soucis tout fonctionne. Sous IE tout semble fonctionner, seulement j'ai un "parasite" quelque part dans le sens ou des que j'ai cliqué la cellule se grise (la DIV invisible devient visible) et de suite redevient normale ( la DIV invisbile devenu visible redevient visible) sans aucune raison apparente.
Pour débugger j'ai mis une pop-up juste avant le changement de style (voir code). Si bien que lorsque je clique sur un cellule, la popup apparait juste avant de modifier l'état de la cellule. Je décale la popup ainsi apparut en dehors de la fenetre ou j'ai mes cellules, puis clique sur "ok" de la popup d'alert. Et là, miracle, la cellule reste grisée. Par contre lorsque je repasse ma souris sur la fenetre (n'importe ou) ou se trouvent les cellules, la cellule précédemment grisée redevient normal. :s
Quelqun saurait il d'ou cela peut venir ?
Merci beaucoup pour votre aide ^^
A voir également:
- [JS] Pb onMouseOver / Out
- Input signal out of range - Forum Ecran
- Av out ✓ - Forum TV & Vidéo
- Round js ✓ - Forum Javascript
- Out of range - Forum Windows
- Problème d'allumage écran LG : "OUT OF RANGE" - Forum Ecran
5 réponses
Bonjour,
Je ne suis pas assez calé pour décrypter ton script.
Cependant, il me semble que ça fonctionne logiquement.
Le onMouseOver sert au survol de l'élément par la souris. Le onMouseOut lorsque la souris le quitte.
Ils ne servent pas pour un clic (“Lorsqu'un utilisateur clique…”).
Pourquoi n'utilises-tu pas directement un événement onClick ?
--
Je ne suis pas assez calé pour décrypter ton script.
Cependant, il me semble que ça fonctionne logiquement.
Le onMouseOver sert au survol de l'élément par la souris. Le onMouseOut lorsque la souris le quitte.
Ils ne servent pas pour un clic (“Lorsqu'un utilisateur clique…”).
Pourquoi n'utilises-tu pas directement un événement onClick ?
--
salut,
as-tu ajouté "return false;" au bout de la fonction dans le 'onclick' ?
as-tu ajouté "return false;" au bout de la fonction dans le 'onclick' ?
onclick="mafonction(parametre); return false;"
Non je n'ai pas mis de "return false", ca change quelque chose de spécial ?
En tout cas je ne pense pas que ca viennent de ca, mais je modifierai une fois rentré chez moi ce soir pour voir si c'est ca.
Merci de ton aide :)
En tout cas je ne pense pas que ca viennent de ca, mais je modifierai une fois rentré chez moi ce soir pour voir si c'est ca.
Merci de ton aide :)
salut,
je ne peux pas t'affirmer que c'est ça mais ça vaut le coup d'essayer.
cela indique au navigateur que l'évènement est traité et qu'il ne doit plus en tenir compte.
je ne peux pas t'affirmer que c'est ça mais ça vaut le coup d'essayer.
cela indique au navigateur que l'évènement est traité et qu'il ne doit plus en tenir compte.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello all,
Le problème venait en fait de l'utilisation de 'getElementsByName()' qui ne s'utilise pas sur des éléments de type DIV. Ca passe sous FF (même si c'est pas recommandé), mais ce n'est pas le cas sous IE.
J'ai donc remplacé et modifier quelque peu l'organisation de mon code js et la disposition de mes balises (nommées via un id unique)
Pour plus de précision sur l'utilisation des méthodes 'getElementsByName()' et 'getElementById()', voici un lien sur un article :
http://www.developpez.net/forums/showthread.php?t=284119
Le problème venait en fait de l'utilisation de 'getElementsByName()' qui ne s'utilise pas sur des éléments de type DIV. Ca passe sous FF (même si c'est pas recommandé), mais ce n'est pas le cas sous IE.
J'ai donc remplacé et modifier quelque peu l'organisation de mon code js et la disposition de mes balises (nommées via un id unique)
Pour plus de précision sur l'utilisation des méthodes 'getElementsByName()' et 'getElementById()', voici un lien sur un article :
http://www.developpez.net/forums/showthread.php?t=284119