Quero substituir o conteúdo de um elemento html, portanto, estou usando a seguinte função para isso:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
O exemplo acima funciona muito bem, mas o problema é que tenho mais de um elemento html em uma página na qual desejo substituir o conteúdo. Portanto, não posso usar IDs, mas classes. Foi-me dito que o javascript não suporta nenhum tipo de elemento get embutido por função de classe. Então, como o código acima pode ser revisado para fazê-lo funcionar com classes em vez de ids?
PS: Eu não quero usar o jQuery para isso.
fonte
class
como um nome de variável não funciona no Safari, portanto, atualmente tem um impacto.elems[i].className
, digitarvar cn
e usarcn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
funcionaria melhor porque corresponde a qualquer espaço em branco (espaço, espaço sem quebra, tabulação etc.), além de permitir a correspondência entre o primeiro e o último nomes da classe. Exemplo: jsfiddle.net/AXdtH/1636Obviamente, todos os navegadores modernos agora oferecem suporte da seguinte maneira mais simples:
mas esteja avisado de que não funciona com o IE8 ou antes. Consulte http://caniuse.com/getelementsbyclassname
Além disso, nem todos os navegadores retornarão puro
NodeList
como deveriam.Você provavelmente ainda está melhor usando sua biblioteca favorita entre navegadores.
fonte
querySelectorAll
.Isso funcionará em navegadores "modernos" que implementam esse método (IE8 +).
Se você deseja fornecer suporte para navegadores mais antigos, pode carregar um mecanismo seletor independente como Sizzle (4KB mini + gzip) ou Peppy (10 K mini) e voltar a usá-lo se o método querySelector nativo não for encontrado.
É um exagero carregar um mecanismo seletor para que você possa obter elementos com uma determinada classe? Provavelmente. No entanto, os scripts não são tão grandes e você pode achar o mecanismo seletor útil em muitos outros lugares do seu script.
fonte
document.querySelector
funciona no IE8 e acima: caniuse.com/queryselectorUma maneira simples e fácil
fonte
Estou surpreso que não haja respostas usando expressões regulares. Essa é a resposta de Andrew , usando em
RegExp.test
vez deString.indexOf
, pois parece ter um desempenho melhor para várias operações, de acordo com os testes do jsPerf .Também parece ser suportado no IE6 .
Se você procurar a (s) mesma (s) classe (s) com freqüência, poderá aprimorá-la ainda mais, armazenando as expressões regulares (pré-compiladas) em outro local e passando-as diretamente para a função, em vez de uma string.
fonte
Isso deve funcionar em praticamente qualquer navegador ...
Você deve poder usá-lo assim:
fonte
fonte
Suponho que essa não era uma opção válida quando isso foi solicitado originalmente, mas agora você pode usá-lo
document.getElementsByClassName('');
. Por exemplo:Veja a documentação MDN para mais.
fonte
Eu acho algo como:
trabalharia
fonte
O jQuery lida com isso com facilidade.
Ele altera todos os elementos .myclass para esse texto.
fonte
Quando alguns elementos não possuem ID, eu uso o jQuery assim:
Pode ser uma solução estranha, mas talvez alguém ache útil.
fonte
myclass
, todos eles obterão o IDmyid
, mas os IDs devem ser únicos! Além disso, o OP diz explicitamente para evitar o jQuery.