Por que o seguinte não funciona para mim?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Por que o seguinte não funciona para mim?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
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>
Você já tentou .innerText
ou em .value
vez de .innerHTML
?
.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>
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?
"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 a document.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)
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
Experimente isto:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>