Pourquoi ce qui suit ne fonctionne-t-il pas pour moi?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
javascript
html
label
innerhtml
Phil Crowe
la source
la source
Réponses:
Parce que votre script s'exécute AVANT que l'étiquette existe sur la page (dans le DOM). Placez le script après l'étiquette ou attendez que le document soit complètement chargé (utilisez une fonction OnLoad, telle que
jQuery ready()
ou http://www.webreference.com/programming/javascript/onloads/ )Cela ne fonctionnera pas:
<script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script> <label id="lbltipAddedComment">test</label>
Cela fonctionnera:
<label id="lbltipAddedComment">test</label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!'; </script>
Cet exemple (lien jsfiddle) maintient l'ordre (script d'abord, puis étiquette) et utilise 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>
la source
Avez-vous essayé
.innerText
ou à la.value
place de.innerHTML
?la source
.value
label
.text('Your Text')
Parce qu'un élément d'étiquette n'est pas chargé lorsqu'un script est exécuté. Échangez les éléments d'étiquette et de script, et cela fonctionnera:
<label id="lbltipAddedComment"></label> <script> document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!'; </script>
la source
Utilisez
.textContent
plutôt.J'avais également du mal à changer la valeur d'un label, jusqu'à ce que j'essaye cela.
Si cela ne résout pas, essayez d'inspecter l'objet pour voir quelles propriétés vous pouvez définir en le connectant à la console avec
console.dir
comme indiqué sur cette question: Comment puis-je enregistrer un élément HTML en tant qu'objet JavaScript?la source
"enter info here:"
partie de ce qui suit:<label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Seulement.textContent
travaillé, et aucun.innerHTML
,.innerText
ou.value
travaillé. (Clause de non-responsabilité: je n'ai vérifié que dans Chrome.).textContent
et.innerText
(bien que bien pour la lecture), n'a pas fonctionné pour mon firefox60 pour l'écriture (il a également effacé le champ de saisie intégré, tout comme.innerHTML
). J'ai donc dû recourir àdocument.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(bien sûr, l'index peut être autre chose que 0, ce qui fait un peu kludgy mais a fonctionné pour moi)L'utilisation
.innerText
devrait fonctionner.document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
la source
Voici une autre façon de modifier le texte d'une étiquette à l'aide de jQuery:
<script> $("#lbltipAddedComment").text("your tip has been submitted!"); </script>
Consultez l' exemple JsFiddle
la source
Essaye ça:
<label id="lbltipAddedComment"></label> <script type="text/javascript"> document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!'; </script>
la source
Parce que le script sera exécuté en premier. Lorsque le script sera exécuté, à ce moment-là, les contrôles ne seront pas chargés. Donc, après le chargement des contrôles, vous écrivez un script.
Ça va marcher.
la source