Modifica il testo dell'etichetta utilizzando JavaScript


90

Perché il seguente non funziona per me?

<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>

1
oops! mi dispiace che dovrebbe essere "non"; 0
phil crowe

4
Perché quando lo script tenta di cambiare l'etichetta innerHtml, lbltipAddedComment in realtà non è presente nella pagina. Inserisci lo script dopo l'etichetta o usa jquery $ (document) .ready ()
Andrew Orsich

scusa non ho visto il pulsante di modifica!
phil crowe

ho provato tutto ciò che è stato suggerito qui ma niente ha funzionato per me.
Rajan Mishra

Risposte:


137

Perché lo script viene eseguito PRIMA che l'etichetta esista sulla pagina (nel DOM). Inserisci lo script dopo l'etichetta o attendi fino al completo caricamento del documento (utilizza una funzione OnLoad, come jQuery ready()o http://www.webreference.com/programming/javascript/onloads/ )

Questo non funzionerà:

<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>

Questo funzionerà:

<label id="lbltipAddedComment">test</label>
<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>

Questo esempio (jsfiddle link) mantiene l'ordine (prima lo script, poi l'etichetta) e utilizza un onLoad:

<label id="lbltipAddedComment">test</label>
<script>
function addLoadEvent(func) {  
      var oldonload = window.onload;  
      if (typeof window.onload != 'function') {  
        window.onload = func;  
      } else {  
        window.onload = function() {  
          if (oldonload) {  
            oldonload();  
          }  
          func();  
        }  
      }  
    }  

   addLoadEvent(function() {  
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';

    });  
</script>

Penso che la risposta .textContent sia effettivamente quella corretta
Paul Taylor il

1
Bene @PaulTaylor, questa risposta è qui dal 2010 e ha 92 voti positivi (e ora, il tuo voto negativo). La domanda utilizzava innerHTML, quindi ho cambiato solo ciò che era necessario per far muovere il suo codice. Anche se penso che sia sempre OK suggerire idee extra ("hey, btw, usa textcontent invece di innerhtml / innertext), non era un problema di OP ... Non c'è bisogno di downvote.
Konerak

Va bene, ma il suo ultimo commento è stato che nulla ha funzionato, quindi ho capito che la tua soluzione non ha funzionato, certo non ha funzionato per me, sembra che questo jsfiddle.net/cfxrLpe9/4 funzioni con textContent ma non innerHtml, perché è quella ?
Paul Taylor

@PaulTaylor La risposta probabilmente ha funzionato per l'OP poiché ha contrassegnato questa risposta come accettata. Hai un errore di battitura nel codice. Stai usando innerHtml invece di innerHTML come mostra la risposta. jsfiddle.net/cfxrLpe9/6
Randall Flagg

22

Hai provato .innerTexto .valueinvece di .innerHTML?


.innerText funziona per l'etichetta. Ho il tag Script all'interno di <Head> e il design in <body>. Anche se per me funziona bene.
Jai

@AshwinG Il tuo commento mi ha appena salvato. Stavo battendo la testa con .valueperlabel
Prabs

Prova a usare.text('Your Text')
subdolo

15

Perché un elemento etichetta non viene caricato quando viene eseguito uno script. Scambia l'etichetta e gli elementi dello script e funzionerà:

<label id="lbltipAddedComment"></label>
<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>

1
Oh, non l'ho notato! Sì, se il codice pubblicato riflette il codice reale (non sta usando jquery per sparare su document.ready o simile), allora questo è un motivo per cui non funzionerebbe altrettanto bene.
GordonM

9

Uso .textContent invece.

Stavo lottando anche per cambiare il valore di un'etichetta, finché non l'ho provato.

Se questo non risolve, prova a ispezionare l'oggetto per vedere quali proprietà puoi impostare accedendo alla console con console.dircome mostrato in questa domanda: come posso registrare un elemento HTML come oggetto JavaScript?


Grazie. Sospetto (ma non ho confermato rigorosamente) che il mio caso d'uso sia simile a quello della domanda: stavo cercando di recuperare e / o modificare il testo di un'etichetta che ha un elemento di input nidificato, ad esempio volevo recuperare e / o modificare la "enter info here:"parte di quanto segue: <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>. Funzionava solo .textContent, e niente .innerHTML, .innerTexto .valuefunzionava. (Dichiarazione di non responsabilità: ho controllato solo in Chrome.)
Andrew Willems

Grazie ho incontrato lo stesso problema
Paul Taylor

2
@AndrewWillems sfortunatamente .textContente .innerText(mentre va bene per la lettura), non ha funzionato per il mio firefox60 per la scrittura (ha anche cancellato il campo di input incorporato, proprio come .innerHTML). Quindi ho dovuto ricorrere a document.getElementById('myLabel').childNodes[0].nodeValue="new label text"(ovviamente, l'indice potrebbe essere qualcosa di diverso da 0, il che lo rende un po 'complicato ma ha funzionato per me)
Matija Nalis

8

L'utilizzo .innerTextdovrebbe funzionare.

document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';

7

Ecco un altro modo per modificare il testo di un'etichetta utilizzando jQuery:

<script>
  $("#lbltipAddedComment").text("your tip has been submitted!");
</script>

Controlla l' esempio JsFiddle


0

Prova questo:

<label id="lbltipAddedComment"></label>
<script type="text/javascript"> 
      document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>

1
Un collegamento a una soluzione è il benvenuto, ma assicurati che la tua risposta sia utile senza di essa: aggiungi un contesto attorno al collegamento in modo che i tuoi colleghi utenti abbiano un'idea di cosa sia e perché sia ​​lì, quindi cita la parte più pertinente della pagina che tu " re collegamento a nel caso in cui la pagina di destinazione non è disponibile. Le risposte che sono poco più di un collegamento possono essere eliminate.
paper1111

0

Perché lo script verrà eseguito per primo .. Quando lo script verrà eseguito, in quel momento i controlli non vengono caricati. Quindi, dopo aver caricato i controlli, scrivi uno script.

Funzionerà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.