Por que o seguinte não funciona para mim?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
javascript
html
label
innerhtml
Phil Crowe
fonte
fonte
Respostas:
Porque seu script é executado ANTES do rótulo existir na página (no DOM). Coloque o script após o rótulo ou espere até que o documento esteja totalmente carregado (use uma função OnLoad, como o
jQuery ready()
ou http://www.webreference.com/programming/javascript/onloads/ )Isso não vai funcionar:
<script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script> <label id="lbltipAddedComment">test</label>
Isso vai funcionar:
<label id="lbltipAddedComment">test</label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script>
Este exemplo (link jsfiddle) mantém a ordem (primeiro o script, depois o rótulo) e usa um 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>
fonte
Você já tentou
.innerText
ou em.value
vez de.innerHTML
?fonte
.value
porlabel
.text('Your Text')
Porque um elemento de rótulo não é carregado quando um script é executado. Troque o rótulo e os elementos do script e funcionará:
<label id="lbltipAddedComment"></label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!'; </script>
fonte
Use em seu
.textContent
lugar.Eu estava lutando para mudar o valor de um rótulo também, até tentar fazer isso.
Se isso não resolver, tente inspecionar o objeto para ver quais propriedades você pode definir registrando-o no console,
console.dir
conforme mostrado nesta pergunta: Como posso registrar um elemento HTML como um objeto JavaScript?fonte
"enter info here:"
parte do seguinte:<label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Só.textContent
funcionou, e nenhum de.innerHTML
,.innerText
ou.value
funcionou. (Isenção de responsabilidade: eu só verifiquei no Chrome.).textContent
e.innerText
(embora seja bom para leitura), não funcionou para meu firefox60 para escrita (também apagou o campo de entrada incorporado, assim como.innerHTML
). Então, tive que recorrer adocument.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(claro, o índice pode ser algo diferente de 0, o que torna um pouco confuso, mas funcionou para mim)Usar
.innerText
deve funcionar.document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
fonte
Esta é outra maneira de alterar o texto de um rótulo usando jQuery:
<script> $("#lbltipAddedComment").text("your tip has been submitted!"); </script>
Verifique o exemplo JsFiddle
fonte
Experimente isto:
<label id="lbltipAddedComment"></label> <script type="text/javascript"> document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!'; </script>
fonte
Porque o script será executado primeiro. Quando o script for executado, os controles não serão carregados. Então, após carregar os controles, você escreve um script.
Vai funcionar.
fonte