Comment obtenir une balise dans une page html, si je sais quelle balise de texte contient. Par exemple:
<a ...>SearchingText</a>
javascript
jquery
innertext
Anton Kandybo
la source
la source
Réponses:
Vous devrez traverser à la main.
la source
i < il
? Qu'est-ce que ça fait?Vous pouvez utiliser xpath pour accomplir cela
Vous pouvez également rechercher un élément contenant du texte en utilisant ce xpath:
la source
Document.evaluate()
n'est pas censé dans le navigateur IEvar xpath = "//a[text()='SearchingText']";
cela ne fonctionne pas, maisvar xpath = "//a[contains(text(),'Searching')]";
cela fonctionne. Soyez conscient du caractère excapé, tel que \ '\'.En utilisant la syntaxe la plus moderne disponible pour le moment, cela peut être fait très proprement comme ceci:
Ou avec un filtre séparé:
Naturellement, les navigateurs hérités ne gèrent pas cela, mais vous pouvez utiliser un transpilateur si un support hérité est nécessaire.
la source
Vous pouvez utiliser jQuery : contains () Selector
la source
Error: <![EX[["Tried to get element with id of \"%s\" but it is not present on the page","a:contains('SearchingText')"]]]> TAAL[1]
bien que j'ai des éléments avec "SearchingText" en eux.Bien sûr, un moyen un peu plus simple est toujours:
Références:
Array.prototype.filter()
.Array.prototype.forEach()
.Array.prototype.slice()
.assessment ? ifTrue : ifFalse
Opérateur conditionnel ('ternaire', ) .Function.prototype.call()
.typeof
opérateur .la source
Approche fonctionnelle. Renvoie le tableau de tous les éléments correspondants et ajuste les espaces lors de la vérification.
Usage
si vous regardez à travers différentes balises, par exemple span ou bouton
La valeur par défaut tag = 'a' aura besoin de Babel pour les anciens navigateurs
la source
a
contiendrastr
-el
sera inclus dans legetElementsByText
résultat; ce qui est faux.Passez simplement votre sous - chaîne dans la ligne suivante:
HTML externe
HTML interne
Vous pouvez les utiliser pour rechercher dans tout le document et récupérer les balises contenant votre terme de recherche:
Utilisation :
Combien de fois l'utilisateur "T3rm1" est-il mentionné sur cette page?
1
Combien de fois jQuery est-il mentionné?
3
Récupère tous les éléments contenant le mot «cybernétique»:
la source
J'ai trouvé l'utilisation de la nouvelle syntaxe un peu plus courte par rapport aux autres réponses. Alors voici ma proposition:
JSfiddle.net
la source
Pour obtenir la méthode de filtrage de user1106925 fonctionnant dans <= IE11 si nécessaire
Vous pouvez remplacer l'opérateur de diffusion par:
[].slice.call(document.querySelectorAll("a"))
et l'appel comprend avec
a.textContent.match("your search term")
qui fonctionne assez bien:
la source
Array.from
place de[].slice.call
. Par exemple:Array.from(document.querySelectorAll('a'))
Bien qu'il soit possible de se débrouiller avec le texte intérieur, je pense que vous vous dirigez dans la mauvaise direction. Cette chaîne interne est-elle générée dynamiquement? Si tel est le cas, vous pouvez donner à la balise une classe ou - mieux encore - un ID lorsque le texte y entre. Si c'est statique, c'est encore plus facile.
la source
Vous pouvez utiliser a
TreeWalker
pour parcourir les nœuds DOM, localiser tous les nœuds de texte contenant le texte et renvoyer leurs parents:la source
Cela fait le travail.
Renvoie un tableau de nœuds contenant
text
.la source
Je pense que vous devrez être un peu plus précis pour que nous puissions vous aider.
Si le texte est unique (ou vraiment, si ce n'est pas le cas, mais que vous devez parcourir un tableau), vous pouvez exécuter une expression régulière pour le trouver. Utiliser preg_match () de PHP fonctionnerait pour cela.
Si vous utilisez Javascript et pouvez insérer un attribut ID, vous pouvez utiliser getElementById ('id'). Vous pouvez ensuite accéder aux attributs de l'élément retourné via le DOM: https://developer.mozilla.org/en/DOM/element.1 .
la source
J'ai juste besoin d'un moyen d'obtenir l'élément qui contient un texte spécifique et c'est ce que j'ai trouvé.
Utilisez
document.getElementsByInnerText()
pour obtenir plusieurs éléments (plusieurs éléments peuvent avoir le même texte exact), et utilisezdocument.getElementByInnerText()
pour obtenir un seul élément (première correspondance).En outre, vous pouvez localiser la recherche en utilisant un élément (par exemple
someElement.getElementByInnerText()
) au lieu dedocument
.Vous devrez peut-être le modifier pour le rendre multi-navigateur ou répondre à vos besoins.
Je pense que le code est explicite, je vais donc le laisser tel quel.
la source