Wie bekomme ich Tag in HTML-Seite, wenn ich weiß, was Text-Tag enthält. Z.B:
<a ...>SearchingText</a>
javascript
jquery
innertext
Anton Kandybo
quelle
quelle
Antworten:
Sie müssen von Hand durchqueren.
quelle
i < il
los? Was macht dasSie können xpath verwenden, um dies zu erreichen
Mit diesem xpath können Sie auch nach einem Element suchen, das Text enthält:
quelle
Document.evaluate()
nicht im IE- Browservar xpath = "//a[text()='SearchingText']";
funktioniert das nicht, abervar xpath = "//a[contains(text(),'Searching')]";
das funktioniert. Achten Sie auf den ausgegrabenen Charakter, z. B. \ '\'.Mit der derzeit modernsten Syntax kann dies sehr sauber gemacht werden:
Oder mit einem separaten Filter:
Natürlich werden ältere Browser dies nicht verarbeiten, aber Sie können einen Transpiler verwenden, wenn ältere Unterstützung benötigt wird.
quelle
Sie können jQuery : enthält () Selector verwenden
quelle
Error: <![EX[["Tried to get element with id of \"%s\" but it is not present on the page","a:contains('SearchingText')"]]]> TAAL[1]
obwohl ich Elemente mit "SearchingText" habe.Ein etwas einfacherer Weg ist natürlich noch:
Verweise:
Array.prototype.filter()
.Array.prototype.forEach()
.Array.prototype.slice()
.assessment ? ifTrue : ifFalse
) Operator .Function.prototype.call()
.typeof
Betreiber .quelle
Funktionaler Ansatz. Gibt ein Array aller übereinstimmenden Elemente zurück und schneidet beim Überprüfen Leerzeichen ab.
Verwendung
Wenn Sie durch verschiedene Tags schauen, z. B. span oder button
Der Standardwert tag = 'a' benötigt Babel für alte Browser
quelle
a
will enthältstr
-el
wird in dasgetElementsByText
Ergebnis aufgenommen; was falsch ist.Geben Sie einfach Ihren Teilstring in die folgende Zeile ein:
Äußeres HTML
Inneres HTML
Mit diesen können Sie das gesamte Dokument durchsuchen und die Tags abrufen, die Ihren Suchbegriff enthalten:
Verwendung :
Wie oft wird der Benutzer "T3rm1" auf dieser Seite erwähnt?
1
Wie oft wird jQuery erwähnt?
3
Holen Sie sich alle Elemente mit dem Wort "Kybernetisch":
quelle
Ich fand die Verwendung der neueren Syntax im Vergleich zu den anderen Antworten etwas kürzer. Also hier ist mein Vorschlag:
JSfiddle.net
quelle
So rufen Sie die Filtermethode von user1106925 ab Arbeits in <= IE11 , wenn nötig
Sie können den Spread-Operator ersetzen durch:
[].slice.call(document.querySelectorAll("a"))
und das schließt Anruf mit ein
a.textContent.match("your search term")
das funktioniert ganz ordentlich:
quelle
Array.from
anstelle von[].slice.call
. Zum Beispiel:Array.from(document.querySelectorAll('a'))
Es ist zwar möglich, an den inneren Text heranzukommen, aber ich denke, Sie gehen in die falsche Richtung. Wird diese innere Zeichenfolge dynamisch generiert? In diesem Fall können Sie dem Tag eine Klasse oder - noch besser - eine ID geben, wenn der Text dort eingeht. Wenn es statisch ist, ist es noch einfacher.
quelle
Mit a können Sie
TreeWalker
die DOM-Knoten durchsuchen, alle Textknoten suchen, die den Text enthalten, und ihre Eltern zurückgeben:quelle
Ich denke, Sie müssen etwas spezifischer sein, damit wir Ihnen helfen können.
Wenn der Text eindeutig ist (oder wirklich nicht, aber Sie müssten ein Array durchlaufen), können Sie einen regulären Ausdruck ausführen, um ihn zu finden. Die Verwendung von preg_match () von PHP würde dafür funktionieren.
Wenn Sie Javascript verwenden und ein ID-Attribut einfügen können, können Sie getElementById ('id') verwenden. Sie können dann über das DOM auf die Attribute des zurückgegebenen Elements zugreifen: https://developer.mozilla.org/en/DOM/element.1 .
quelle
Ich brauchte nur einen Weg, um das Element zu erhalten, das einen bestimmten Text enthält, und das habe ich mir ausgedacht.
Verwenden Sie
document.getElementsByInnerText()
diese Option , um mehrere Elemente abzurufen (mehrere Elemente haben möglicherweise denselben exakten Text), und verwenden Siedocument.getElementByInnerText()
diese Option, um nur ein Element abzurufen (erste Übereinstimmung).Sie können die Suche auch lokalisieren, indem Sie ein Element (z. B.
someElement.getElementByInnerText()
) anstelle von verwendendocument
. .Möglicherweise müssen Sie es optimieren, um es browserübergreifend zu gestalten oder Ihre Anforderungen zu erfüllen.
Ich denke, der Code ist selbsterklärend, also lasse ich ihn so wie er ist.
quelle
Das macht den Job.
Gibt ein Array von Knoten zurück, die enthalten
text
.quelle