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 :

GetElementById() avec un Id dynamique


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut GetElementById() avec un Id dynamique
    Bonjour,

    Je fais un GetElementById en Javascript sur un Id Dynamique et je me retrouve un peu coincé car j'ai une erreur qui dit :

    document.getelementbyid a une valeur null ou n'est pas un objet.

    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
     
    var debut_id = "dgdListeFicheMensuelle__ctl";
    var fin_id = "_Check";
     
    for (i=1; i<n; i++)
    {
     
    									if(document.getElementById(debut_id+i+fin_id).checked = false)
    														{
    									document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = false;
    }
     
     
    }
    Est-ce bien comme cela qu'on gère la concaténation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(debut_id+i+fin_id)
    Merci pour vos remarques ...

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    la syntaxe de concaténation est correcte, mais :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(document.getElementById(debut_id+i+fin_id).checked == false)
    c'est == dans un test

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Ok merci beaucoup. Ta réponse m'a permi de résoudre un autre souci que j'avais.

    Par contre en ce qui concerne ma fonction elle ne fonctionne toujours pas.

    Ma situation :
    J'ai une colonne de checkbox dans un DataGrid avec une checkbox dans le header de ma colonne.
    Lorsque je coche la checkbox dans le header toutes mes autres checkbox se cochent et quand je décoche elles se décochent.
    Ceci marche nikel.
    Voici mon code pour ceux que ca intéresse:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function CheckAllDataGridCheckBoxes()
            {                   
    				//list des input dans un conteneur précis
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
    				var i;
     
     
                    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked == true)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = true;
     
    								}
    						}
     
                    }
     
                    if (document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked == false)
                    {
    					//alert('ca passe');
     
    					for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
    							if (listInput[i].type.toLowerCase()=="checkbox")
    								{
    									//alert('ca passe');
    									listInput[i].checked = false;
     
    								}
    						}
     
                    }               
     
            }
    Par contre maintenant ce que je cherche à faire c'est de pouvoir décocher ma checkbox qui se trouve dans mon header dès qu'une checkbox de ma colonne est décochée.
    Pour l'instant 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
    28
    29
    30
    function DecocherCheckAll()
            {
    			//list des input dans un conteneur précis
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
    				var i;
    				var debut_id = "dgdListeFicheMensuelle__ctl";
    				var fin_id = "_Check";
     
    				for (i=0; i<n; i++)
    						{
    							//on ne garde que les checkbox
     
     
    									if(document.getElementById(debut_id+i+fin_id).checked == false)
     
    									//{
     
    									//}
     
    									//if(listInput[i].checked = false)
    									{
    									document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = false;
    									}
     
     
    						}
     
     
            }
    Sachant que dans mon code source de ma page html j'ai mes checkbox qui ont des ids du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id="dgdListeFicheMensuelle__ctl2_Check"
    id="dgdListeFicheMensuelle__ctl3_Check"
    id="dgdListeFicheMensuelle__ctl4_Check"
    id="dgdListeFicheMensuelle__ctl5_Check"
    etc ...
    Vois-tu d'où pourrai venir le souci ?

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    C'est bon j'ai résolu mon pb.

    Voici le code qui fonctionne:

    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
    function DecocherCheckAll()
            {
    			//list des input dans un conteneur précis
     
    				var i;
    				var debut_id = "dgdListeFicheMensuelle__ctl";
    				var fin_id = "_Check";
    				var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    				var n = listInput.length;
     
    				for (i=1; i<n; i++)
    						{
    							//on ne garde que les checkbox
     
    									if (listInput[i].type.toLowerCase()=="checkbox")
    									{
    									if (listInput[i].checked == false)
    									document.getElementById('dgdListeFicheMensuelle__ctl1_CheckAll').checked = false;
    									}
     
     
    						}
     
     
            }

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var listInput = document.Form1.document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");

    j'aurais écrit :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var listInput = document.getElementById("dgdListeFicheMensuelle").getElementsByTagName("input");
    pour moi document.Form1 est superflu car tu accèdes à un élément par son id. Or un id est unique dans la page. Donc préciser que l'élément ciblé se trouve dans Form1 est inutile.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 55
    Points
    55
    Par défaut
    Pas faux ça marche pareil !

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

Discussions similaires

  1. Problème avec les libraires dynamiques
    Par Harzoglups dans le forum C
    Réponses: 3
    Dernier message: 17/01/2006, 15h21
  2. prob avec tableau croisé dynamique
    Par zorian dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 12h56
  3. [c++] Tableau avec taille initiale dynamique
    Par mister3957 dans le forum C++
    Réponses: 15
    Dernier message: 22/11/2005, 11h33
  4. Réponses: 6
    Dernier message: 10/11/2005, 08h58
  5. Problème avec la RTL dynamique
    Par lamojuli dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/11/2004, 14h45

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