Cómo obtener la etiqueta en la página html, si sé qué etiqueta de texto contiene. P.ej:
<a ...>SearchingText</a>
javascript
jquery
innertext
Anton Kandybo
fuente
fuente
Respuestas:
Tendrás que atravesar a mano.
fuente
i < il
? ¿Qué está haciendo eso?Podrías usar xpath para lograr esto
También puede buscar un elemento que contenga texto usando este xpath:
fuente
Document.evaluate()
que no se supone en el navegador IEvar xpath = "//a[text()='SearchingText']";
Esto no funciona, perovar xpath = "//a[contains(text(),'Searching')]";
funciona. Tenga en cuenta el carácter extraído, como \ '\'.Usando la sintaxis más moderna disponible en este momento, se puede hacer de manera muy limpia de esta manera:
O con un filtro separado:
Naturalmente, los navegadores heredados no manejarán esto, pero puede usar un transpilador si se necesita soporte heredado.
fuente
Puede usar jQuery : contiene () Selector
fuente
Error: <![EX[["Tried to get element with id of \"%s\" but it is not present on the page","a:contains('SearchingText')"]]]> TAAL[1]
aunque tengo elementos con "SearchingText" en ellos.Por supuesto, una forma algo más simple todavía es:
Referencias
Array.prototype.filter()
.Array.prototype.forEach()
.Array.prototype.slice()
.assessment ? ifTrue : ifFalse
Operador condicional ('ternario' ) .Function.prototype.call()
.typeof
operador .fuente
Enfoque funcional. Devuelve una matriz de todos los elementos coincidentes y recorta espacios alrededor durante la comprobación.
Uso
si está mirando diferentes etiquetas, es decir, span o botón
El valor predeterminado tag = 'a' necesitará Babel para los navegadores antiguos
fuente
a
contendrástr
-el
se incluirá en elgetElementsByText
resultado; Cuál está mal.Simplemente pase su subcadena a la siguiente línea:
HTML externo
HTML interno
Puede usarlos para buscar en todo el documento y recuperar las etiquetas que contienen su término de búsqueda:
Uso :
¿Cuántas veces se menciona el usuario "T3rm1" en esta página?
1
¿Cuántas veces se menciona jQuery?
3
Obtenga todos los elementos que contengan la palabra "Cibernético":
fuente
El uso de la sintaxis más nueva me pareció un poco más corto en comparación con la respuesta de los demás. Así que aquí está mi propuesta:
JSfiddle.net
fuente
Para que el método de filtro del usuario1106925 funcione en <= IE11 si es necesario
Puede reemplazar el operador de propagación con:
[].slice.call(document.querySelectorAll("a"))
y el incluye llamada con
a.textContent.match("your search term")
que funciona bastante bien:
fuente
Array.from
lugar de[].slice.call
. Por ejemplo:Array.from(document.querySelectorAll('a'))
Si bien es posible pasar por el texto interno, creo que se dirige hacia el camino equivocado. ¿Esa cadena interna se genera dinámicamente? Si es así, puede asignar una clase a la etiqueta o, mejor aún, una identificación cuando el texto ingrese allí. Si es estático, entonces es aún más fácil.
fuente
Puede usar a
TreeWalker
para repasar los nodos DOM y localizar todos los nodos de texto que contienen el texto, y devolver sus padres:fuente
Esto hace el trabajo.
Devuelve una matriz de nodos que contiene
text
.fuente
Creo que necesitarás ser un poco más específico para que podamos ayudarte.
Si el texto es único (o realmente, si no lo es, pero tendría que ejecutar una matriz), puede ejecutar una expresión regular para encontrarlo. El uso de preg_match () de PHP funcionaría para eso.
Si está usando Javascript y puede insertar un atributo ID, puede usar getElementById ('id'). Luego puede acceder a los atributos del elemento devuelto a través del DOM: https://developer.mozilla.org/en/DOM/element.1 .
fuente
Solo necesitaba una forma de obtener el elemento que contiene un texto específico y esto es lo que se me ocurrió.
Úselo
document.getElementsByInnerText()
para obtener múltiples elementos (múltiples elementos pueden tener el mismo texto exacto), y utilícelodocument.getElementByInnerText()
para obtener solo un elemento (primera coincidencia).Además, puede localizar la búsqueda utilizando un elemento (por ejemplo
someElement.getElementByInnerText()
) en lugar dedocument
.Es posible que deba ajustarlo para que sea cruzado o satisfaga sus necesidades.
Creo que el código se explica por sí mismo, así que lo dejaré como está.
fuente