Dlaczego poniższe nie działają dla mnie?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
javascript
html
label
innerhtml
Phil Crowe
źródło
źródło
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>
źródło
Próbowałeś
.innerText
czy.value
zamiast tego.innerHTML
?źródło
.value
label
.text('Your Text')
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>
źródło
Używanie
.innerText
powinno działać.document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
źródło
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?źródło
"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ę dodocument.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
źródło
Spróbuj tego:
<label id="lbltipAddedComment"></label> <script type="text/javascript"> document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!'; </script>
źródło
Ponieważ skrypt zostanie wykonany jako pierwszy. Kiedy skrypt zostanie wykonany, w tym czasie kontrolki nie są ładowane. Więc po załadowaniu kontrolek piszesz skrypt.
To będzie działać.
źródło