Se eu tiver um espaço, diga:
<span id="myspan"> hereismytext </span>
Como uso o JavaScript para alterar "hereismytext" para "newtext"?
javascript
html
user105033
fonte
fonte
textContent
vez disso, você poderia considerar a possibilidade de atualizar sua resposta para que novas pessoas sejam incentivadas a usar métodos adequados e seguros?Usando innerHTML é SO NÃO RECOMENDADO . Em vez disso, você deve criar um textNode. Dessa forma, você está "vinculando" seu texto e não é, pelo menos nesse caso, vulnerável a um ataque XSS.
O caminho certo:
Para mais informações sobre esta vulnerabilidade: Cross Site Scripting (XSS) - OWASP
Editado em 4 de novembro de 2017:
Terceira linha de código modificada de acordo com a sugestão @mumush : "use appendChild (); em vez disso".
Aliás, de acordo com @Jimbo Jonny , acho que tudo deve ser tratado como entrada do usuário, aplicando o princípio Segurança por camadas. Dessa forma, você não encontrará nenhuma surpresa.
fonte
innerHTML
exigir cautela, observe que sua solução usa oinnerText
que não é suportado no Firefox. quirksmode.org/dom/html Ele também usa otextContent
que não é suportado no IE8. Você pode estruturar o código para solucionar esses problemas.span.appendChild(txt);
vez disso!innerHTML
não é recomendada é ridícula. Sem mencionar que ainda está bom uma vez higienizado. A idéia de que se deve higienizar a entrada do usuário NÃO ESTÁ RELACIONADA A essa pergunta específica. No máximo, ela merece uma pequena nota no final dizendo "btw: se for a entrada do usuário, certifique-se de higienizar primeiro ou usar o método X que não precisa" .span.innerHTML = "";
então appendChild?fonte
EDIT: Isso foi escrito em 2014. Você provavelmente não se importa mais com o IE8 e pode esquecer de usá-lo
innerText
. Basta usartextContent
e acabar com isso, viva.Se você for quem fornece o texto e nenhuma parte do texto é fornecida pelo usuário (ou alguma outra fonte que você não controla), a configuração
innerHTML
pode ser aceitável:No entanto, como outros observam, se você não é a fonte de qualquer parte da cadeia de texto, o uso
innerHTML
pode sujeitá-lo a ataques de injeção de conteúdo como o XSS, se você não tomar cuidado para limpar o texto primeiro.Se você estiver usando informações do usuário, aqui está uma maneira de fazê-lo com segurança, mantendo também a compatibilidade entre navegadores:
O Firefox não suporta
innerText
e o IE8 não suporta,textContent
portanto, você precisará usar os dois se quiser manter a compatibilidade entre navegadores.E se você quiser evitar refluxos (causados por
innerText
) sempre que possível:fonte
Eu uso
Jquery
e nenhuma das opções acima ajudou, não sei por que, mas isso funcionou:fonte
Aqui está outra maneira:
A propriedade innerText será detectada pelo Safari, Google Chrome e MSIE. Para o Firefox, a maneira padrão de fazer as coisas era usar o textContent, mas desde a versão 45 ela também possui uma propriedade innerText, como alguém gentilmente me avisou recentemente. Esta solução testa para verificar se um navegador suporta uma dessas propriedades e, se houver, atribui o "novo texto".
Demonstração ao vivo: aqui
fonte
Além das respostas puras de javascript acima, você pode usar o método de texto jQuery da seguinte maneira:
Se você precisar estender a resposta para obter / alterar o conteúdo html de um elemento span ou div, faça o seguinte:
Referências:
.text (): http://api.jquery.com/text/
.html (): http://api.jquery.com/html/
fonte
Você também pode usar o método querySelector (), assumindo que o ID 'myspan' seja único, pois o método retorna o primeiro elemento com o seletor especificado:
developer.mozilla
fonte
Como em outra resposta, innerHTML e innerText não são recomendados, é melhor usar textContent . Esse atributo é bem suportado, você pode verificar isso: http://caniuse.com/#search=textContent
fonte
isso selecionará nó-dom com id
myspan
e alterará o conteúdo de texto paranew text
fonte
Você pode fazer
fonte
Para este período
Você pode ir assim: -
fonte