Eu preciso definir o texto dentro de um elemento DIV dinamicamente. Qual é a melhor abordagem segura para o navegador? Eu tenho prototypejs e scriptaculous disponíveis.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Aqui está a aparência da função:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
esplêndido
fonte
fonte
Respostas:
Eu usaria o
update
método Prototype, que suporta texto sem formatação, um trecho de HTML ou qualquer objeto JavaScript que defina umtoString
método.fonte
$("field_name").text("new text");
Você pode simplesmente usar:
fonte
element.innerHTML = "<script>doSomethingMalicious()</script>";
não será uma boa ideia.element.innerHTML = "& neither will this";
Atualizado para todos que leem isso em 2013 e posteriores:
Essa resposta tem muito SEO, mas todas as respostas estão seriamente desatualizadas e dependem de bibliotecas para fazer o que todos os navegadores atuais fazem de imediato.
Para substituir o texto dentro de um elemento div, use Node.textContent, que é fornecido em todos os navegadores atuais.
fonte
textContent
um método superior éinnerHTML
: é mais rápido, mais seguro e mais apropriado quando não estiver tentando inserir deliberadamente a marcação HTML.As vantagens de fazê-lo desta maneira:
Se eu fosse usar uma biblioteca javascript, usaria o jQuery e faria o seguinte:
Observe que o comentário de @AnthonyWJones está correto: "field_name" não é um ID ou nome de variável particularmente descritivo.
fonte
Uma das características bacanas do Prototype é que
$('field_name')
faz a mesma coisa quedocument.getElementById('field_name')
. Use-o! :-)A resposta de John Topley usando a
update
função Prototype é outra boa solução.fonte
$
procura um item por ID. Não é baseado em seletor como o jQuery. api.prototypejs.org/dom/dollarA resposta rápida é usar innerHTML (ou o método de atualização do protótipo que praticamente faz a mesma coisa). O problema com o innerHTML é que você precisa escapar do conteúdo que está sendo atribuído. Dependendo dos seus alvos, você precisará fazer isso com outro código OU
no IE: -
em FF: -
(Na verdade, da FF tem o seguinte presente no código)
Agora eu posso usar o innerText se você precisar do suporte mais amplo possível ao navegador, então essa não é uma solução completa, mas também não é o innerHTML no estado bruto.
fonte
Se você realmente deseja que continuemos de onde parou, você pode:
fonte
nodeValue também é uma propriedade DOM padrão que você pode usar:
fonte
fonte
Se você está inclinado a começar a usar muito JavaScript em seu site, o jQuery torna extremamente simples jogar com o DOM.
http://docs.jquery.com/Manipulation
Torna tão simples quanto: $ ("# field-name"). Text ("Some new text.");
fonte
Use innerText se você não puder assumir a estrutura - Use Text # data para atualizar o texto existente Performance Test
fonte
fonte
Aqui está uma maneira fácil do jQuery :
fonte
Em HTML, coloque isso
Em Javascript coloque isso
fonte