Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2011, 13h47   #1
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 3
Points : 3
Par défaut Syntaxe d'une Fonction

Bonjour,
Je voudrais écrire ce genre de fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<script language="javascript" type="text/javascript">
function X()
   {
 var  etat=document.getElementById('id dans balise div ').style.display;
   if(etat=="block"){
   function Y () return false;
   }
   else{
   function Y () return true;   }
   }
</script>
Est-il possible d'appeler une function dans une autre function ?
Si oui, quelqu'un pourrait-il me donner la bonne syntaxe ?
Merci d'avance
Jojolito
jojolito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 13h55   #2
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 789
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 789
Points : 5 112
Points : 5 112
bonjour,

Citation:
Envoyé par jojolito Voir le message
Est-il possible d'appeler une function dans une autre function ?
Si oui, quelqu'un pourrait-il me donner la bonne syntaxe ?
oui tout à fait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// déclaration de Y()
function Y()
{
     // code de la fonction...
 
}
 
// déclaration de X()
function X()
{
      // code de la fonction...
 
     Y();        // appel de Y
}

Une remarque en passant :
Code :
1
2
 
document.getElementById('id dans balise div ').style.display
ne retournera rien si la propriété a été déclarée en CSS.

Si tu as modifié la valeur de cette propriété dans un script javascript alors dans ce cas (et uniquement dans ce cas) style.display retournera la valeur affectée.
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 18h54   #3
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 3
Points : 3
Par défaut Syntaxe d'une fonction

Merci pour votre réponse mais je fais fausse route. Ce n'est pas la méthode qui me permettra de venir à bout du dysfonctionnement que je constate.
En fait voilà sur quoi je butte :
J'ai un menu déroulant dont l'une des sous-listes d'une des listes ouvre une pop up et m'assombrit la div de background. Cela se fait bien. Ce qui n'est pas bon c'est qu'une fois la pop up ouverte le fait de passer la souris sur la zone assombrie déclenche le menu déroulant au niveau de la liste concernée par la pop up. Cela me semble normal puisque la div assombrie et la div de la pop up se trouvent entre les balises <li> et </li> de la sous-liste. J'essaie de neutraliser cet effet depuis plusieurs jours et je n'y arrive pas.
J'ai essayé de cacher le block des sous-listes du menu sous toutes les div de ma page lorsque la pop up était ouverte en modifiant le z-index à l'aide d'une fonction jvs. Du bricolage !
J'ai essayé de neutraliser la fonction qui déroule le menu lorsque la fonction qui ouvre la pop up était activée. C'était la raison de ma question initiale. Ce n'est pas mieux.
Je ne vois pas comment faire.
Voici mes codes JS. Ce sont des codes classiques trouvés dans différents tutos et forums
Du menu déroulant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<script language="javascript" type="text/javascript"> 
function sfHover() {
        var sfEls = document.getElementById("menu").getElementsByTagName("li");
        for (var i=0; i<sfEls.length; i++) {
                sfEls[i].onmouseover=function() {
                        this.className+=" sfhover";
                }
                sfEls[i].onmouseout=function() {
                        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
                }
        }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>
De la pop up :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
<script language="javascript" type="text/javascript"> 
function hideDiv() 
    { 
        if (document.getElementById) { // DOM3 = IE5, NS6 
            document.getElementById('hideshow').style.visibility = 'hidden'; 
        } 
        else { 
            if (document.layers) { // Netscape 4 
                document.hideshow.visibility = 'hidden'; 
            } 
            else { // IE 4 
                document.all.hideshow.style.visibility = 'hidden'; 
            } 
        } 
    }
 
    function showDiv() { 
        if (document.getElementById) { // DOM3 = IE5, NS6 
            document.getElementById('hideshow').style.visibility = 'visible'; 
        } 
        else { 
            if (document.layers) { // Netscape 4 
                document.hideshow.visibility = 'visible'; 
            } 
            else { // IE 4 
                document.all.hideshow.style.visibility = 'visible'; 
            } 
        } 
    }
</script>
La partie du code html de ma page concerné :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<ul>
<li><a href="javascript:showDiv();" >BlaBla</a>								
<div id="hideshow" style="visibility:hidden;">
<div id="fade"></div>
<div class="popup_block">
		<div class="popup">
</div>
</div>
</li>
</ul>
Id = fade est celle que j'assombris.
Si vous avez une idée ....
Merci d'avance
Josélito
jojolito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 09h50   #4
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
pas sûr d'avoir tout bien compris, mais je me hasarderais à dire qu'il faut tester dans la fonction mouveover si la div est visible,
- SI OUI on ne fait pas le changement de class
- SI NON on fait le changement de class
Code :
1
2
3
4
5
sfEls[i].onmouseover=function() {
  if( La_div_est_NOT_Visible){
    this.className +=" sfhover";
  }
}
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 08h29   #5
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 3
Points : 3
Par défaut Syntax d'une fonction

Merci pour votre aide mais en fait il suffisait de sortir la pop up des balises <li></li>. J'ai perdu beaucoup de temps là dessus !
Josélito
jojolito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h10   #6
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Sinon tu peux neutraliser temporairement ta fonction tant que la pop-up est active :
Code :
1
2
3
4
5
6
var yBackup = y;
y = function(){};
// Ton traitement, y ne peut plus rien faire.
// ...
// Fin de ton traitement, restauration de y :
y = yBackup;
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h26.


 
 
 
 
Partenaires

Hébergement Web