Ändern Sie den Beschriftungstext mit JavaScript


88

Warum funktioniert das Folgende bei mir nicht?

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

1
Hoppla! Entschuldigung, das sollte "nicht" sein; 0
Phil Crowe

4
Denn wenn Sie mit dem Skript versuchen, die Bezeichnung innerHtml zu ändern, ist lbltipAddedComment auf der Seite tatsächlich nicht vorhanden. Fügen Sie das Skript nach dem Label ein oder verwenden Sie jquery $ (document) .ready ()
Andrew Orsich

Entschuldigung, die Schaltfläche zum Bearbeiten wurde nicht angezeigt!
Phil Crowe

Ich habe alles versucht, was hier vorgeschlagen wurde, aber nichts hat bei mir funktioniert.
Rajan Mishra

Antworten:


136

Da Ihr Skript ausgeführt wird, BEVOR das Label auf der Seite (im DOM) vorhanden ist. Setzen entweder das Skript nach dem Etikett, oder warten Sie, bis das Dokument vollständig geladen ist (verwenden Sie eine OnLoad - Funktion, wie die jQuery ready()oder http://www.webreference.com/programming/javascript/onloads/ )

Das wird nicht funktionieren:

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

Das wird funktionieren:

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

In diesem Beispiel (jsfiddle-Link) wird die Reihenfolge (zuerst Skript, dann Bezeichnung) beibehalten und ein onLoad verwendet:

<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>

Ich denke, .textContent Antwort ist eigentlich die richtige
Paul Taylor

1
Nun, @PaulTaylor, diese Antwort ist seit 2010 hier und hat 92 positive Stimmen (und jetzt Ihre negative Stimme). Bei der Frage wurde innerHTML verwendet, daher habe ich nur das geändert, was erforderlich war, um seinen Code in Bewegung zu setzen. Obwohl ich der Meinung bin, dass es immer in Ordnung ist, zusätzliche Ideen vorzuschlagen ("Hey, übrigens, verwenden Sie Textinhalt anstelle von innerhtml / innertext), war dies nicht das Problem von OP ... Es besteht keine Notwendigkeit, eine Abwertung vorzunehmen.
Konerak

Okay , aber hat er jemals bekommen es arbeitet , um seine letzte Bemerkung war , dass nichts funktioniert so ist es mein Verständnis war , dass Ihre Lösung nicht funktioniert hat , certianly funktionierte nicht für mich sieht das jsfiddle.net/cfxrLpe9/4 arbeitet mit textcontent aber nicht innerhtml, warum Das ?
Paul Taylor

@PaulTaylor Die Antwort hat wahrscheinlich für das OP funktioniert, da er diese Antwort als akzeptiert markiert hat. Sie haben einen Tippfehler in Ihrem Code. Sie verwenden innerHtml anstelle von innerHTML, wie die Antwort zeigt. jsfiddle.net/cfxrLpe9/6
Randall Flagg

21

Hast du es versucht .innerTextoder .valuestatt .innerHTML?


.innerText funktioniert für Label. Ich habe das Script-Tag in <Head> und das Design in <body>. Obwohl es für mich gut funktioniert.
Jai

@AshwinG Dein Kommentar hat mich gerade gerettet. Ich schlug mir den Kopf mit .valuefürlabel
Prabs

Versuchen Sie zu verwenden.text('Your Text')
hinterhältig

15

Weil ein Label-Element nicht geladen wird, wenn ein Skript ausgeführt wird. Tauschen Sie die Beschriftungs- und Skriptelemente aus, und es wird funktionieren:

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

1
Oh, das habe ich nicht bemerkt! Ja, wenn der veröffentlichte Code den tatsächlichen Code widerspiegelt (jquery wird nicht zum Auslösen von document.ready oder ähnlichem verwendet), ist dies ein Grund, warum er nicht so gut funktioniert.
GordonM

9

Verwenden Sie .textContentstattdessen.

Ich hatte auch Probleme damit, den Wert eines Labels zu ändern, bis ich es versuchte.

Wenn sich das Problem nicht beheben lässt, überprüfen Sie das Objekt, um festzustellen, welche Eigenschaften Sie festlegen können, indem Sie es wie in der folgenden console.dirFrage gezeigt in der Konsole protokollieren : Wie kann ich ein HTML-Element als JavaScript-Objekt protokollieren?


Danke dir. Ich vermute (habe dies aber nicht konsequent bestätigt), dass mein Anwendungsfall dem in der Frage ähnelt: Ich habe versucht, den Text eines Etiketts mit einem verschachtelten Eingabeelement abzurufen und / oder zu ändern, z. B. wollte ich und abrufen / oder ändern Sie den "enter info here:"Teil der folgenden : <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>. Nur .textContentarbeitete, und keiner von .innerHTML, .innerTextoder .valuearbeitete. (Haftungsausschluss: Ich habe nur in Chrome eingecheckt.)
Andrew Willems

Vielen Dank, dass ich das gleiche Problem getroffen habe
Paul Taylor

2
@ AndrewWillems leider .textContentund .innerText(obwohl gut zum Lesen), funktionierte nicht für meine Firefox60 zum Schreiben (es löschte auch eingebettetes Eingabefeld, genau wie .innerHTML). Also musste ich zurückgreifen document.getElementById('myLabel').childNodes[0].nodeValue="new label text"(natürlich könnte der Index etwas anderes als 0 sein, was ein wenig klobig ist, aber für mich funktioniert hat)
Matija Nalis

8

Verwenden .innerTextsollte funktionieren.

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

6

Hier ist eine andere Möglichkeit, den Text eines Etiketts mit jQuery zu ändern:

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

Überprüfen Sie das JsFiddle-Beispiel


0

Versuche dies:

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

1
Ein Link zu einer Lösung ist willkommen, aber stellen Sie sicher, dass Ihre Antwort ohne sie nützlich ist: Fügen Sie dem Link einen Kontext hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es dort ist, und zitieren Sie dann den relevantesten Teil der Seite, die Sie verwenden. erneutes Verknüpfen mit, falls die Zielseite nicht verfügbar ist. Antworten, die kaum mehr als ein Link sind, können gelöscht werden.
paper1111

0

Da das Skript zuerst ausgeführt wird. Wenn das Skript ausgeführt wird, werden zu diesem Zeitpunkt keine Steuerelemente geladen. Nach dem Laden der Steuerelemente schreiben Sie ein Skript.

Es wird klappen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.