Warum funktioniert das Folgende bei mir nicht?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Warum funktioniert das Folgende bei mir nicht?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Antworten:
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>
Hast du es versucht .innerText
oder .value
statt .innerHTML
?
.value
fürlabel
.text('Your Text')
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>
Verwenden Sie .textContent
stattdessen.
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.dir
Frage gezeigt in der Konsole protokollieren : Wie kann ich ein HTML-Element als JavaScript-Objekt protokollieren?
"enter info here:"
Teil der folgenden : <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Nur .textContent
arbeitete, und keiner von .innerHTML
, .innerText
oder .value
arbeitete. (Haftungsausschluss: Ich habe nur in Chrome eingecheckt.)
.textContent
und .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)
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
Versuche dies:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>