IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ordre des window.addEvent


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 20
    Par défaut Ordre des window.addEvent
    Bonsoir, en fait j'ai un petit soucis. Alors il s'agit des .addEvent de Mootools, mais je pense que les .addEventListener (il me semble) sans bibliothèque doit être pareil.
    En effet voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    window.addEvent('domready', function(){
    	var slideMenu2 = new Fx.Slide('smenu2').hide();
    	$('menu2').addEvent('click', function(e){
    		e = new Event(e);
    		slideMenu2.toggle();
    		e.stop();
    	});
    });
     
    window.addEvent('domready', function(){
    	var slideMenu3 = new Fx.Slide('smenu3').hide();
    	$('menu3').addEvent('click', function(e){
    		e = new Event(e);
    		slideMenu3.toggle();
    		e.stop();
    	});
    });
     
     
    window.addEvent('domready', function(){
    	var slideMenu1 = new Fx.Slide($('smenu1')).hide();
    	$('menu1').addEvent('click', function(e){
    		e = new Event(e);
    		slideMenu1.toggle();
    		e.stop();
    	});
    });

    Mais en fait, suivant les page, certains id ne sont pas affiché ! Par exemple si je n'affiche par le id="menu2" sur une page, et bien les 2 autres ne marcheront pas

    Autre question, comme tous mes blocs ont la même racine ('menu' ou 'smenu'), j'ai essayé de faire tous mes addEvent dans une boucle mais ça ne fonctionne pas ...

    Merci à vous pour votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par arcanum Voir le message
    Mais en fait, suivant les page, certains id ne sont pas affiché ! Par exemple si je n'affiche par le id="menu2" sur une page, et bien les 2 autres ne marcheront pas
    il faut donc que tu conditionnes le contenu de tes fonctions à l'existence des objets.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    window.addEvent('domready', function(){
    if ($('menu2')) {
    	var slideMenu2 = new Fx.Slide('smenu2').hide();
    	$('menu2').addEvent('click', function(e){
    		e = new Event(e);
    		slideMenu2.toggle();
    		e.stop();
    	});
    }
    });
    A+

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 20
    Par défaut
    Hum, d'accord, mais si la condition n'est pas remplie, ça ne fait rien d'avoir un addEvent vide ??
    Je vais tester comme ça merci pour l'astuce je n'y avait vraiment pas pensé !

    edit : bon ça marche et ça n'a pas l'air de me sortir d'erreur
    Par contre c'est le bloc qui slide que j'ai mis dans la condition if, et pas le bouton d'action (bien que ce soit presque pareil ^^ )

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par arcanum Voir le message
    Hum, d'accord, mais si la condition n'est pas remplie, ça ne fait rien d'avoir un addEvent vide ??
    Ben ... la fonction dynamique existera, mais elle n' addera rien du tout
    Pour ne pas créer de fonctions inutiles, effectivement il vaudrait peut être mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($('menu2')) {
    window.addEvent('domready', function(){
    	var slideMenu2 = new Fx.Slide('smenu2').hide();
    	$('menu2').addEvent('click', function(e){
    		e = new Event(e);
    		slideMenu2.toggle();
    		e.stop();
    	});
    });
    }
    De toutes façons, un accès à un objet inexistant génère une erreur qui plante ton code ...

    A+

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 20
    Par défaut
    Ok merci beaucoup tout à l'air de fonctionner

    edit : hum en fait après plus de test poussés, avec la condition avant ça marche pas, il ne le créé pas même quand l'élément avec l'id dans la condition existe Alors que dedans ça fonctionne...

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2013, 21h02
  2. Réponses: 6
    Dernier message: 15/05/2006, 11h50
  3. Modifier l'ordre des cartes son
    Par YéTeeh dans le forum Matériel
    Réponses: 3
    Dernier message: 19/08/2003, 01h13
  4. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  5. Question : ordre des bits ?
    Par Choupi dans le forum C
    Réponses: 3
    Dernier message: 11/02/2003, 06h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo