2009-10-08 9 views
7

Senza utilizzare alcun framework JavaScript, come posso modificare dinamicamente il testo all'interno di un elemento SPAN.JS: Come inserire dinamicamente testo in uno SPAN?

io so come fare questo con un DIV, sarebbe il seguente:

document.getElementById('myDiv').innerHTML = '...' 

Qual è l'equivalente di questo per un elemento SPAN?

risposta

18

getElementById() fare esattamente come dice il nome: ottenere un elemento con attributo id è uguale all'argomento; quindi, se si dispone di un lasso di nome "mySpan", il codice dovrebbe essere:

document.getElementById('mySpan').innerHTML = '...'
3

Questa tecnica specifica funziona per qualsiasi elemento, anche se l'avvertenza sull'utilizzo di elementi come le div è che sostituirà gli elementi interni e non solo il testo.

Se si desidera solo sostituire il testo si può farlo:

function replaceText(el, str) { 
    el.textContent ? el.textContent = str : el.innerText = str; 
} 

replaceText(spanReference, 'blah') 
6

innerHTML funzionerà ma può essere pericoloso in alcune situazioni, se non sai quello che stai facendo. Può inserire tag HTML, non solo testo, aprendoti eventualmente ad attacchi XSS, ecc.

Il codice textContent con innerText fallback che alcuni hanno proposto è un'idea migliore in quanto non devi preoccuparti dell'iniezione di script, ecc.

Se non è necessario supportare IE8 e versioni precedenti, utilizzare textContent senza fallback. IE9 e versioni successive supportano textContent.

+0

Questo dovrebbe essere molto più alto in quanto è una risposta molto dettagliata a un problema generale, non un caso d'uso specifico per l'OP. – krillgar

+0

Tuttavia è un po 'confuso. Un piccolo esempio sarebbe più chiaro. – clearlight

Problemi correlati