Чому наступне не працює для мене?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Чому наступне не працює для мене?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Відповіді:
Оскільки ваш скрипт працює ДО того, як мітка існує на сторінці (у DOM). Або поставте сценарій після мітки, або почекайте, поки документ повністю завантажиться (використовуйте функцію OnLoad, наприклад, jQuery ready()
або http://www.webreference.com/programming/javascript/onloads/ )
Це не спрацює:
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>
Це буде працювати:
<label id="lbltipAddedComment">test</label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
Цей приклад (посилання jsfiddle) підтримує порядок (спочатку сценарій, а потім мітка) і використовує 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>
Оскільки елемент мітки не завантажується під час виконання сценарію. Поміняйте місцями мітку та елементи сценарію, і це буде працювати:
<label id="lbltipAddedComment"></label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
Використовуйте .textContent
замість цього.
Я теж боровся зі зміною значення етикетки, поки не спробував цього.
Якщо це не допомогло, спробуйте перевірити об'єкт, щоб побачити, які властивості ви можете встановити, ввівши його в консоль, console.dir
як показано на це запитання: Як я можу зареєструвати елемент HTML як об'єкт JavaScript?
"enter info here:"
частину наступного: <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Тільки .textContent
працював, і жоден з них .innerHTML
, .innerText
або .value
працював. (Застереження: я зареєструвався лише в Chrome.)
.textContent
і .innerText
(хоча добре для читання), не працював для мого firefox60 для написання (він також стер вбудоване поле введення, як і .innerHTML
). Отже, мені довелося вдатися до document.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(звичайно, індекс може бути дещо іншим, ніж 0, що робить трохи кладер, але це спрацювало для мене)
Ось ще один спосіб змінити текст мітки за допомогою jQuery:
<script>
$("#lbltipAddedComment").text("your tip has been submitted!");
</script>
Перевірте приклад JsFiddle
Спробуйте це:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>