¿Por qué no me funciona lo siguiente?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
javascript
html
label
innerhtml
Phil Crowe
fuente
fuente
Respuestas:
Porque su secuencia de comandos se ejecuta ANTES de que la etiqueta exista en la página (en el DOM). Coloque el script después de la etiqueta o espere hasta que el documento se haya cargado por completo (use una función OnLoad, como
jQuery ready()
o http://www.webreference.com/programming/javascript/onloads/ )Esto no funcionará:
<script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script> <label id="lbltipAddedComment">test</label>
Esto funcionará:
<label id="lbltipAddedComment">test</label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script>
Este ejemplo (enlace jsfiddle) mantiene el orden (primero el script, luego la etiqueta) y usa un 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>
fuente
¿Has probado
.innerText
o en.value
lugar de.innerHTML
?fuente
.value
paralabel
.text('Your Text')
Porque un elemento de etiqueta no se carga cuando se ejecuta un script. Cambie la etiqueta y los elementos del script y funcionará:
<label id="lbltipAddedComment"></label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!'; </script>
fuente
Úselo en su
.textContent
lugar.También estaba luchando con cambiar el valor de una etiqueta, hasta que probé esto.
Si esto no se resuelve, intente inspeccionar el objeto para ver qué propiedades puede establecer registrándolo en la consola
console.dir
como se muestra en esta pregunta: ¿Cómo puedo registrar un elemento HTML como un objeto JavaScript?fuente
"enter info here:"
parte del siguiente:<label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Solo.textContent
trabajó, y ninguno de.innerHTML
,.innerText
ni.value
funcionó. (Descargo de responsabilidad: solo he verificado en Chrome).textContent
y.innerText
(aunque está bien para leer), no funcionó para mi firefox60 para escribir (también borró el campo de entrada incrustado, al igual que.innerHTML
). Así que tuve que recurrir adocument.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(por supuesto, el índice podría ser algo diferente a 0, lo que hace que sea un poco torpe, pero me funcionó)El uso
.innerText
debería funcionar.document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
fuente
Aquí hay otra forma de cambiar el texto de una etiqueta usando jQuery:
<script> $("#lbltipAddedComment").text("your tip has been submitted!"); </script>
Verifique el ejemplo de JsFiddle
fuente
Prueba esto:
<label id="lbltipAddedComment"></label> <script type="text/javascript"> document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!'; </script>
fuente
Porque la secuencia de comandos se ejecutará primero. Cuando la secuencia de comandos se ejecutará, en ese momento los controles no se cargan. Entonces, después de cargar los controles, escribe un script.
Funcionará.
fuente