36 votes

JavaScript: obtenir la valeur du texte du bouton personnalisé

J'ai un bouton qui est défini comme suit :

texte du bouton ici

Et j'essaie de le récupérer en fonction de la valeur du texte. Cependant, aucune de ses attributs ne contient la valeur du texte. Il est généré de manière assez personnalisée en apparence.

Est-ce que quelqu'un sait comment trouver cette valeur de manière programmatique, autrement que simplement en parcourant le texte HTML ? Autre que les attributs ?

J'ai oublié une autre chose, l'id de ce bouton change régulièrement et l'utiliser jQuery pour le récupérer provoque une rupture de la page pour une raison inconnue. Si vous avez besoin de plus d'informations sur pourquoi j'ai besoin de cela, faites-le moi savoir.

Voici le JavaScript avec lequel j'essaie de le récupérer :

var all = document.getElementsByTagName('*'); 
for (var i=0, max=all.length; i < max; i++) 
{
var elem = all[i];
if(elem.getAttribute("id") == 'ext-gen26'){
    if(elem.attributes != null){
        for (var x = 0; x < elem.attributes.length; x++) {
            var attrib = elem.attributes[x];
            alert(attrib.name + " = " + attrib.value);  
        }
    }
}
};

Il ne renvoie que les trois attributs qui sont définis dans le code.

innerHTML, text et textContent - tout revient comme null.

43voto

ThiefMaster Points 135805

Vous pouvez le faire en utilisant les propriétés textContent/innerText (dépendant du navigateur). Voici un exemple qui fonctionnera peu importe la propriété utilisée par le navigateur :

var elem = document.getElementById('ext-gen26');
var txt = elem.textContent || elem.innerText;
alert(txt);

http://jsfiddle.net/ThiefMaster/EcMRT/

Vous pourriez également le faire en utilisant jQuery :

alert($('#ext-gen26').text());

23voto

Richard Connamacher Points 1613

Si vous essayez de localiser le bouton uniquement par son contenu textuel, je récupérerais une liste de tous les boutons et bouclerais à travers eux pour trouver celui-ci :

function findButtonbyTextContent(text) {
  var buttons = document.querySelectorAll('button');
  for (var i=0, l=buttons.length; i

`

Bien sûr, si le contenu de ce bouton change ne serait-ce qu'un peu, votre code devra être mis à jour.

`

4voto

stpoa Points 2136

Une ligne pour trouver un bouton basé sur son texte.

const findButtonByText = text => 
  [...document.querySelectorAll('button')]
    .find(btn => btn.textContent.includes(text))

0voto

Ananta K Roy Points 924

Si vous avez un bouton sans aucun identifiant tel que id ou class, vous pouvez également obtenir la valeur du texte en utilisant l'objet Event. Par exemple :

html

Cliquez

javascript

const handleClick = (event) => {
   const textBtn = Object.values(event.target.innerText).join('');
   ...
}

Notez que l'exemple ci-dessus fonctionne bien pour un texte de bouton monoword. Vous devriez jouer un peu si le texte du bouton contient plusieurs mots.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X