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>
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>
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>
Avez-vous essayé .innerText
ou à la .value
place de .innerHTML
?
.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>
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?
"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)
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
Essaye ça:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>