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 :

[POO] Affectation de fonction sur onclick et oncontextmenu


Sujet :

JavaScript

  1. #1
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut [POO] Affectation de fonction sur onclick et oncontextmenu
    Bonjour,

    voilà un petit souci que j'ai.
    J'ai une page avec pas mal d'input

    Lorsque je créé ma page, je mets des fonctions sur le oncontextmenu et le onclick de mes input ainsi qu'à leur parent (TD)

    Si j'appuie sur un bouton de bascule, je passe par une fonction qui met à null mes fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Parcours des périodes	
    for (var i=1;i<6;i++) {
    	for (var j=1;j<5;j++) {
    		var obj = document.getElementById("plng"+idAgent+"."+i+j);
    		//Si sa valeur est une absence
    		if (strAbsence.indexOf(obj.value,0) > 0 || obj.value.substring(0,3).toUpperCase()=="REU" || obj.value.substring(0,4).toUpperCase()=="FORM") {
    			obj.oncontextmenu=null;
    			obj.parentNode.oncontextmenu = null;
    			obj.parentNode.onclick = null;
    			obj.disabled = true;
    		}
    	}
    }
    Si j'appuie de nouveau sur ce bouton de bascule qui remet mes fonctions en place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Parcours des périodes	
    for (var i=1;i<6;i++) {
    	for (var j=1;j<5;j++) {
    		var obj = document.getElementById("plng"+idAgent+"."+i+j);
    		//Si sa valeur est une absence
    		if (strAbsence.indexOf(obj.value,0) > 0 || obj.value.substring(0,3).toUpperCase()=="REU" || obj.value.substring(0,4).toUpperCase()=="FORM") {
    			obj.disabled = false;
    			obj.oncontextmenu=function(){periodeEnCours=i+j;showmenu(obj.id); return false;};
    			obj.parentNode.oncontextmenu = function(){periodeEnCours=i+j;showmenu(obj.id); return false;};
    			obj.parentNode.onclick= function(){document.getElementById(obj.id).focus();}
    		}
    	}
    }
    Seulement, si je regarde évoluer ma source en debug, les fonctions oncontextmenu et onchange ne sont pas remises. Je ne comprends pas pourquoi.

    Auriez-vous une idée?
    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    le source n'est pas modifié par javascript ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Certes mais lorsque je débugges si je fais obj.size=2 alors dans mon debugger je vois la propriété de mon objet qui passe de 1 à 2
    Alors que lorsque j'affecte mes oncontextmenu ou onclick, rien n'est modifié.

    C'est pour cela que je me demandais si je n'avais pas un problème dans mon code...

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Je pense avoir compris mon problème. Il ne m'évalue ma fonction que lorsque je l'appeles. Or comme je suis dans une boucle, il ne me l'évalue pas avec les bons paramètres.

    Faut que je trouve comment résoudre cela maintenant.

  5. #5
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    J'ai trouvé une solution mais cela semble être de la bidouille enfin bon je le mets ici au cas où
    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
     
    //Parcours des périodes	
    for (var i=1;i<6;i++) {
    	for (var j=1;j<5;j++) {
    		var obj = document.getElementById("plng"+idAgent+"."+i+j);
    		//Si sa valeur est une absence
    		if (strAbsence.indexOf(obj.value,0) > 0 || obj.value.substring(0,3).toUpperCase()=="REU" || obj.value.substring(0,4).toUpperCase()=="FORM") {
    			obj.disabled = false;
    			// Il faut affecter les valeurs à une variable dans l'objet afin de pouvoir les réutiliser ensuite lorsque la fonction sera évaluée.
    			obj.periode = parseInt(i.toString()+j.toString());
    			obj.oncontextmenu = function(){periodeEnCours=this.periode;showmenu(this.id); return false;};
    			obj.parentNode.periode = parseInt(i.toString()+j.toString());
    			obj.parentNode.inId = obj.id;
    			obj.parentNode.oncontextmenu = function(){periodeEnCours=this.periode;showmenu(this.inId); return false;};
    			obj.parentNode.onclick= function(){document.getElementById(this.inId).focus();}
    		}
    	}
    }

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    oui fallait aller voir dasn les contributions ou la FAQ le problème de l'affectation des i dasn les boucles ... il sonrt toujours le dernier ...
    Il faut en effet attribuer à chaque objet une propriété et y faire appel au moyen de this.propriete dans la focntion
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Oui en effet, honte sur moi de pas être aller voir la FAQ

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction sur onclick
    Par Antherak dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/06/2009, 20h06
  2. attacher une fonction sur onclick
    Par julien.63 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/10/2007, 20h00
  3. Execution de 2 fonctions sur onclick
    Par zorba49 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/08/2006, 11h10
  4. 2 fonctions sur un onClick
    Par renaud26 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 28/07/2006, 20h14
  5. Bouton alternant 2 fonctions sur le meme evenement onClick
    Par Rocca dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/01/2006, 09h16

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