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 :

Récupérer l'id


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Récupérer l'id
    Salut,

    Peut on récupérer l'id d'un élément html à partir de son nom?
    Par exemple j'ai:
    <div id="mon_id_variable" name="nom_constant">
    Avec getElementsByName("nomconstant") je voudrais récupérer l'id correspondant.
    Comment faire?
    Merci

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut Facile
    ca ne marche pas ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetElementByName("monnom").id
    Fremy

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    non

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut Petit script pour t'aider
    Lance cette page et tu comprendra.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    	<body>
    		<span name="s" id="t"></span>
    		<script>
    		for (property in document.getElementsByName("s")[0])
    		{ 
    			 document.getElementsByName("s")[0].innerHTML =  document.getElementsByName("s")[0].innerHTML + property + "<br />"
    		}
    		</script>
    	</body>
    </html>
    tu dois utiliser [0] pour recevoir le premier controle ayant pour nom "s", [1] pour obtenir le 2e, ...

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    J'explique ce que je veux faire.
    J'ai X div.
    Quan je clique sur un bouton et que le div lui correpondant est visible, je le rend invisible avec display:none;
    Lorsque je clique sur ce meme bouton et qu'il est invisible, je veux le rendre visible, mais tous les autres invisibles

    Sachant que mes div portent le même nom block, que leur id est block_a ou block_b etc... et que le nom des bouton est button_*lettre* j'ai fait ça:

    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
    function DisableEnable(lettre) {
       block = "block_" + lettre;
       mod = document.getElementById(block).style.display;
       nbblocks = document.getElementsByName('block').length; // renvoit toujours 0 même s'il y en a 2 !
       if (mod == 'none') {
          document.getElementById(block).style.display = 'block';
          for(i=0; i<nbblocks; i++) {
             if (*block different de celui en question*)
                document.getElementsByName('block')[i].style.display = 'none';
          }
          document.getElementsByName('button_' + lettre)[0].style.color = 'orange';
       }
       else {
          document.getElementById(block).style.display = 'none';
          document.getElementsByName('button_' + lettre)[0].style.color = 'black';
       }	
    }

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    A la place de block_a, b, c utilise block_0, 1, 2
    et ce code (vérrifie qu'il ne reste pas qques fautes dedans)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try {
          for(i=0; i<100; i++) { 
             if (chiffre != i) 
                document.getElementById('block_' + i).style.display = 'none'; 
          }
    }
    catch (ex) {alert('la fin de la liste a été atteinte')}

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Bon j'ai mis des nombre (ou lettre est égal à un nombre) et j'ai fais:

    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
    function DisableEnable(lettre) {
       block = "block_" + lettre;
       mod = document.getElementById(block).style.display;
       if (mod == 'none') {
          document.getElementById(block).style.display = 'block';
     
          # Ici ça plante 
     
          for(i=0; i<26; i++) {
             if (i != lettre)
                document.getElementById('block_' + i).style.display = 'none';
             }
          document.getElementById('button_' + lettre).style.color = 'orange';
     
          #
      }
       else {
          document.getElementById(block).style.display = 'none';
          document.getElementById('button_' + lettre).style.color = 'black';
       }
    }
    Mais mes couleurs ne sont plus changées et quand j'ouvre un div les autres ne se ferment pas

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut Mort de rire
    Lol c'est normal, tu mélange tout !
    tu dois choisir 'block_' + i OU "block_" + lettre;

    Je vais un peu relooker tout ca :-)
    Je poste ma réponse d'ici peu.
    Fremy

  9. #9
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    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
    // Fichier JScript
     
    function DisableEnable(chiffre) { 
       block = "block_" + chiffre; 
       mod = document.getElementById(block).style.display; 
       if (mod == 'none') { 
          document.getElementById(block).style.display = 'block'; 
     
        try {
            for(i=0; i<1000; i++) { 
                if (i != chiffre) 
                document.getElementById('block_' + i).style.display = 'none'; 
            } 
            document.getElementById('button_' + chiffre).style.color = 'orange'; 
        }
        catch (ex) {/*Liste terminée*/}
     
      } 
       else { 
          document.getElementById(block).style.display = 'none'; 
          document.getElementById('button_' + chiffre).style.color = 'black'; 
       } 
    }

  10. #10
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Merci mais ce que tu m'as dit est exactement la même chose que moi sauf que tu as changé lettre par chiffre, tu as mis try (facultatif je pense) et mis i < 1000 au lieu de i < 26 pour l'alphabet.

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Voila ou ça plante miantenant:

    Si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (var i = 0; i < 26; i++) {
       alert('ok' + i);
       if (i != chiffre) {
          document.getElementById('block_' + i).style.display = 'none';
       }
    }
    J'ai que 1 alert: alert('0');
    Si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (var i = 0; i < 26; i++) {
       alert('ok' + i);
       /*if (i != chiffre) {
          document.getElementById('block_' + i).style.display = 'none';
       }*/
    }
    Ca va bien jusqu'à 25. C'est ce qui arrête tout ?

  12. #12
    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 143
    Points
    11 143
    Par défaut
    bonjour,

    Citation Envoyé par Anduriel
    J'explique ce que je veux faire.
    J'ai X div.
    Quan je clique sur un bouton et que le div lui correpondant est visible, je le rend invisible avec display:none;
    Lorsque je clique sur ce meme bouton et qu'il est invisible, je veux le rendre visible, mais tous les autres invisibles
    voici une méthode simple : au départ aucun élément n'est affiché. Lors du chargement de la page j'appelle la fonction Affiche() et je lui transmet comme argument le numéro de l'élément que je veux afficher.

    Il n'est pas nécessaire de passer tous les éléments en revue : si tu n'en affiche qu'un à la fois seul le dernier élément affiché est à cacher. C'est ce que fait ce 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    div{
    border: 2px solid #A1B2C3;
    width: 200px;
    height: 40px;
    display: none;
    }
     
    //-->
    </style>
     
    <script type="text/javascript">
    <!--
    var oldDiv = null;
    function Affiche(numDiv)
    {
      var nomDiv = "idDiv"+numDiv.toString();
      var eDiv = document.getElementById(nomDiv);
     
      eDiv.style.display = "block";
     
      if (oldDiv!=null)
      {
        oldDiv.style.display = "none";
      }
     
      oldDiv = eDiv;
     
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="Affiche(1)">
    <input type="button" value=" B1 " id="B1" onclick="Affiche(1)">
    <input type="button" value=" B2 " id="B2" onclick="Affiche(2)">
    <input type="button" value=" B3 " id="B3" onclick="Affiche(3)">
    <input type="button" value=" B4 " id="B4" onclick="Affiche(4)">
    <input type="button" value=" B5 " id="B5" onclick="Affiche(5)">
    <input type="button" value=" B6 " id="B6" onclick="Affiche(6)">
    <input type="button" value=" B7 " id="B7" onclick="Affiche(7)">
    <br><br>
    <div id="idDiv1">Div 1</div>
    <div id="idDiv2">Div 2</div>
    <div id="idDiv3">Div 3</div>
    <div id="idDiv4">Div 4</div>
    <div id="idDiv5">Div 5</div>
    <div id="idDiv6">Div 6</div>
    <div id="idDiv7">Div 7</div>
     
    </body>
     
    </html>

  13. #13
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Génial !
    Merci

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

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35
  3. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  4. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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