Como obter tag na página html, se eu souber qual tag de texto contém. Por exemplo:
<a ...>SearchingText</a>
javascript
jquery
innertext
Anton Kandybo
fonte
fonte
Respostas:
Você terá que atravessar à mão.
fonte
i < il
? O que isso está fazendo?Você pode usar o xpath para fazer isso
Você também pode procurar um elemento que contenha algum texto usando este xpath:
fonte
Document.evaluate()
não é suposto no IE navegadorvar xpath = "//a[text()='SearchingText']";
Isso não está funcionando, masvar xpath = "//a[contains(text(),'Searching')]";
funciona. Esteja ciente do caractere excedido, como \ '\'.Usando a sintaxe mais moderna disponível no momento, isso pode ser feito de maneira muito limpa assim:
Ou com um filtro separado:
Naturalmente, os navegadores herdados não lidam com isso, mas você pode usar um transpiler se for necessário suporte legado.
fonte
Você pode usar o jQuery : contains () Selector
fonte
Error: <![EX[["Tried to get element with id of \"%s\" but it is not present on the page","a:contains('SearchingText')"]]]> TAAL[1]
embora eu tenha elementos com "SearchingText" neles.Obviamente, uma maneira um pouco mais simples ainda é:
Referências:
Array.prototype.filter()
.Array.prototype.forEach()
.Array.prototype.slice()
.assessment ? ifTrue : ifFalse
Operador condicional ('ternário' ) .Function.prototype.call()
.typeof
operador .fonte
Abordagem funcional. Retorna a matriz de todos os elementos correspondentes e apara os espaços ao redor durante a verificação.
Uso
se você estiver procurando por diferentes tags, como extensão ou botão
A tag de valor padrão = 'a' precisará do Babel para navegadores antigos
fonte
a
irá conterstr
-el
será incluído nogetElementsByText
resultado; o que está errado.Basta passar sua substring para a seguinte linha:
HTML externo
HTML interno
Você pode usá-los para pesquisar em todo o documento e recuperar as tags que contêm seu termo de pesquisa:
Uso :
Quantas vezes o usuário "T3rm1" é mencionado nesta página?
1
Quantas vezes o jQuery é mencionado?
3
Obtenha todos os elementos que contêm a palavra "Cybernetic":
fonte
Eu achei o uso da sintaxe mais recente um pouco menor em comparação com as outras respostas. Então aqui está a minha proposta:
JSfiddle.net
fonte
Para obter o método de filtro do usuário1106925 trabalhando em <= IE11, se necessário
Você pode substituir o operador de propagação por:
[].slice.call(document.querySelectorAll("a"))
e inclui a chamada com
a.textContent.match("your search term")
que funciona muito bem:
fonte
Array.from
vez de[].slice.call
. Por exemplo:Array.from(document.querySelectorAll('a'))
Embora seja possível entender o texto interno, acho que você está seguindo o caminho errado. Essa cadeia interna é gerada dinamicamente? Nesse caso, você pode atribuir à tag uma classe ou - melhor ainda - ID quando o texto for inserido lá. Se é estático, é ainda mais fácil.
fonte
Você pode usar a
TreeWalker
para passar pelos nós do DOM, localizar todos os nós de texto que contêm o texto e retornar seus pais:fonte
Acho que você precisará ser um pouco mais específico para ajudá-lo.
Se o texto for único (ou realmente, se não for, mas você precisaria executar uma matriz), você poderia executar uma expressão regular para encontrá-lo. Usar o preg_match () do PHP funcionaria para isso.
Se você estiver usando Javascript e puder inserir um atributo de ID, poderá usar getElementById ('id'). Você pode acessar os atributos do elemento retornado através do DOM: https://developer.mozilla.org/en/DOM/element.1 .
fonte
Eu só precisava de uma maneira de obter o elemento que contém um texto específico e foi isso que eu criei.
Use
document.getElementsByInnerText()
para obter vários elementos (vários elementos podem ter o mesmo texto exato) e usedocument.getElementByInnerText()
para obter apenas um elemento (primeira correspondência).Além disso, você pode localizar a pesquisa usando um elemento (por exemplo
someElement.getElementByInnerText()
) em vez dedocument
.Pode ser necessário ajustá-lo para torná-lo entre navegadores ou satisfazer suas necessidades.
Eu acho que o código é auto-explicativo, então vou deixar como está.
fonte
Isso faz o trabalho.
Retorna uma matriz de nós que contêm
text
.fonte