Récupérer text d'un button

Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - Modifié par jordane45 le 26/04/2015 à 11:31
 Utilisateur anonyme - 26 avril 2015 à 21:45
Bonjour, je crée plusieurs button en javascript avec createlement dans une boucle for. J'attribue à ces button un texte avec innerHTML ou textContent, ou value.
Ensuite, je voudrais récupérer le texte dans ce bouton, mais ça ne fonctionne pas !
Alors voilà ce que j'ai écris :

var DIV = document.getElementById('MonDiv');

 while(listeConv[0].length>0)
 {
  
   listeMailButton[i] = listeAmisConv[0][0];
   
    var button = document.createElement("button");
             button.type = "button";
          button.class = "Button"+NbreButton+"";
          button.id = ""+listeAmis[0][0]+"";
    var val =;
 
    button.textContent = ""+listeAmis[1][0]+"";
         
             DIV.appendChild(button);
   
    
    
      button.onclick = (function() {
       var currentI = listeConv[0][0];
           return function() { 
    console.log(currentI);
          ChangeMail(currentI);
      }
   })();
   
  listeConv[0].shift();
 listeConv[1].shift();

NbreButton++;
  }




Mais ça m'affiche undefined dans la console, donc comme si le bouton créé n'avait pas de texte !
Voyez-vous comment résoudre ce problème ?
Merci d'avance !

5 réponses

Utilisateur anonyme
26 avril 2015 à 00:12
Bonjour

Es-tu sûr de donner le bon code ? Chez moi, la ligne var val =; provoque une erreur et il ne se passe pas grand chose.
Et si je retire cette ligne et que j'adapte un peu (je n'ai pas tes tableaux), ça marche, le texte des boutons s'affiche bien dans la console.
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
26 avril 2015 à 10:51
Ah oui pardon, normalement il n'y a pas cette ligne var val =; !
Mais c'est bien sans cette ligne que ca foire ! Parce que dans la boucle while, si j'affiche le texte du button dans la console ça fonctionne aussi, mais c'est depuis une autre fonction que ca ne fonctionne pas. Même une fonction toute bête qui ne fait afficher le texte dans la console, j'ai toujours undefined...
0
Utilisateur anonyme
26 avril 2015 à 18:47
mais c'est depuis une autre fonction que ca ne fonctionne pas
Je ne comprends pas.
Depuis quelle autre fonction ?
Une que tu ne nous donnes pas ?
Tu nous demandes de dire ce qui ne va pas dans une fonction que tu ne donnes pas ?
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
26 avril 2015 à 21:15
Ce que je veux dire c'est depuis n'importe quelle autre fonction ! Par exemple :
function UneFonction()
{
Var button = document.getElementById('Button');
console.log(button.value);
}
En appelant cette fonction après la création du bouton, ca me renvoie undefined.
Mais en fait je mets comme value de mon button un élément d'une liste qui est supprimée ensuite.
Alors peut être qu'au moment de l'afficher, il va chercher la valeur dans cette liste qui n'existe plus...
Alors il faudrait que je "fige" la valeur de value au moment de la création pour se ca ne dépende plus de la liste...
Vois tu ce que je veux dire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 avril 2015 à 21:45
C'est bien, ce que je pensais : tu nous demandais de dire ce qui n'allait pas dans une fonction sans nous donner cette fonction. Tu crois que nous sommes devins ?
Le code que tu as donné dans ton premier post est correct. Par contre, ta manière de récupérer le texte du bouton n'est pas correcte, elle.
Une fois que le texte a été attribué au bouton, peu importe qu'il vienne ou non d'une liste et que cette liste ait été détruite : quand tu vois le texte du bouton, c'est celui du bouton, pas de la liste.
document.getElementById('Button'); 

Ton bouton s'appelle-t-il 'Button' ? A priori, son id vient de la liste listeAmis[0][0]. Au passage, il semblerait que tous tes boutons aient le même id, ce qui est une absurdité : un identifiant doit être unique, sinon ce n'est pas un identifiant.
D'autre part :
console.log(button.value); 

Ceci n'affiche pas le texte du bouton. Ceci affiche son attribut "value", et comme tu n'as pas mis d'attribut value, ça affiche undefined.
Le texte du bouton est dans textContent, tu devrais le savoir puisque c'est comme ça que tu affectes le texte à ton bouton. Pour le retrouver il suffit donc de faire
console.log(button.textContent); 
0