Dlaczego poniższe nie działają dla mnie?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Dlaczego poniższe nie działają dla mnie?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Odpowiedzi:
Ponieważ twój skrypt jest uruchamiany ZANIM etykieta istnieje na stronie (w DOM). Albo umieść skrypt za etykietą, albo poczekaj, aż dokument zostanie w pełni załadowany (użyj funkcji OnLoad, takiej jak jQuery ready()
lub http://www.webreference.com/programming/javascript/onloads/ )
To nie zadziała:
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>
To zadziała:
<label id="lbltipAddedComment">test</label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
Ten przykład (łącze jsfiddle) utrzymuje kolejność (najpierw skrypt, a następnie etykieta) i używa 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>
Ponieważ element etykiety nie jest ładowany podczas wykonywania skryptu. Zamień etykiety i elementy skryptu, a zadziała:
<label id="lbltipAddedComment"></label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
Użyj .textContent
zamiast tego.
Zmagałem się również ze zmianą wartości etykiety, dopóki tego nie wypróbowałem.
Jeśli to nie rozwiąże problemu, spróbuj zbadać obiekt, aby zobaczyć, jakie właściwości możesz ustawić, logując się do konsoli, console.dir
jak pokazano w poniższym pytaniu: Jak mogę zarejestrować element HTML jako obiekt JavaScript?
"enter info here:"
należy: <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Tylko .textContent
pracował, a żaden z .innerHTML
, .innerText
lub .value
pracował. (Zastrzeżenie: sprawdzałem tylko w przeglądarce Chrome).
.textContent
i .innerText
(chociaż dobrze nadaje się do czytania), nie działał na moim firefox60 do pisania (również usuwał osadzone pole wejściowe, podobnie jak .innerHTML
). Musiałem więc uciec się do document.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(oczywiście indeks może być czymś innym niż 0, co sprawia, że jest trochę niezdarny, ale zadziałało)
Oto inny sposób zmiany tekstu etykiety za pomocą jQuery:
<script>
$("#lbltipAddedComment").text("your tip has been submitted!");
</script>
Sprawdź przykład JsFiddle
Spróbuj tego:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>