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 :

pb: affecter durablement l'id d'un objet (portée globale et non locale)


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut pb: affecter durablement l'id d'un objet (portée globale et non locale)
    bonjour,

    je vais essayer d'expliquer au mieux mon problème. Dans une fonction "apparaitre" j'appelle une fonction "surbriller".


    Dans cette fonction "surbriller", j'affiche la nature d'un element selon son id ("id_td_saisie_auto_organisme_surbrillance"), comme il n'existe pas "null" est affiché ce qui est normal.


    si mon document.getElementById('id_td_saisie_auto_organisme_surbrillance') vaut null je rentre dans un if ou j'execute certaines lignes de code (c'est donc ce qui se passe), dont notamment l'affectation d'un id "id_td_saisie_auto_organisme_surbrillance" à un objet (qui est en fait un "td").


    pour verifier que l'affectation s'est bien passée je fais un alert de document.getElementById('id_td_saisie_auto_organisme_surbrillance') et cela affiche la nature de mon element ce qui est normal.


    ensuite je sors de mes fonctions, puis je réappelle "apparaitre" qui réappelle "surbriller", puis dans "surbriller" je fais un alert de mon fameux document.getElementById('id_td_saisie_auto_organisme_surbrillance') et la mystere il m'affiche encore null !!! il va donc une nouvelle fois rentrer dans mon if malgré mon affectation lors de l'appel précédant de "surbriller".


    j'ai le sentiment que mon affectation d'id n'a eu qu'une portée locale (a savoir dans ma fonction "surbriller") et non globale (a savoir pour tout mon programme en général).

    ci dessous les bouts de code concernés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function surbriller(numero){
     
     
    			alert(document.getElementById('id_td_saisie_auto_organisme_surbrillance'));
    			if (document.getElementById('id_td_saisie_auto_organisme_surbrillance') == null){
     
    				var element = document.getElementById('id_tr_saisie_auto_organisme_0');
    				element.bgColor = 'green';
    				var NodeListe = element.childNodes;
    				NodeListe[0].id = 'id_td_saisie_auto_organisme_surbrillance';
    				alert(document.getElementById('id_td_saisie_auto_organisme_surbrillance'));
    			}
    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
     
    function apparaitre(param,param2,param3,param_event){
     
    		document.getElementById(param).innerHTML = "echo \"<table width='100%' id='id_table_saisie_auto_organisme' align='left'><tbody></tbody></table>\"";
     
    		var code = code_touche(param_event);
     
    		document.getElementById(param).style.display = 'block';
    		http.open("POST", "requete_saisie_auto_organisme.php", true);
    		http.onreadystatechange = function (){
     
    								  		if (http.readyState == 4) {
     
    											document.getElementById(param).innerHTML = http.responseText;
     
    											if (document.getElementById(param2).innerHTML != '<tbody></tbody>'	 ){
     
    	//appel de ma fonction surbriller -->							surbriller(code);
     
    											}
    										}
    								  }
    		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		var saisie = param3.value;
    		http.send("saisie="+saisie);
     
    	}


    voila j'espere avoir été suffisamment clair, merci pour votre aide...

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ben pour aller vite, si tu veux une portée globale, déclare ta variable hors fonction;


  3. #3
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut
    sans vouloir te manquer de respect et excuse moi si tu l'a lu mais as tu lu mon post ?

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bah, vaguement, comme ça oui; et je n'ai vu aucune variable globale...

  5. #5
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut
    ici il s'agit d'affecter un id à un élément et cela doit se faire absolument dans ma fonction, malheureusement cette affectation d'id n'est effective que dans ma fonction et non dans mon programme en général.

  6. #6
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut
    en fait je dois utiliser une variable globale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var globale;
     
    function surbriller(numero){
     
     
     
    			if (globale == undefined){
     
    				globale = document.getElementById('id_tr_saisie_auto_organisme_0');
    				globale = 'id_td_saisie_auto_organisme_surbrillance';
    				globale = 'green';
     
    			}

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    foutage de gueule...

  8. #8
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ou sinon ou encore

    même pas merci ni rien !!!

    ça donne envie de répondre à ta prochaine question pit9 ...

    nouveau membre .... il va falloir te mettre au jus
    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 !

  9. #9
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 87
    Points
    87
    Par défaut
    toutes mes excuses javatwister j'etais a l'ouest (peut etre la chaleur ou ma bêtise tout simpliement ) encore désolé et merci d'avoir résolu mon probleme

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/05/2010, 02h05
  2. [E-07] Comment affecter par macro une macro à un objet
    Par BATISSEUR dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2009, 09h49
  3. Affecter un même callback à plusieurs objets
    Par pelotudo dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 23/05/2007, 10h23
  4. affectation d'une valeur a un objet Integer
    Par inter_amine dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 17/10/2006, 17h16
  5. [POO] affectation dynamique d'une méthode à un objet
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 21h17

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