Mengapa berikut ini tidak berhasil untuk saya?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Mengapa berikut ini tidak berhasil untuk saya?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
Jawaban:
Karena skrip Anda berjalan SEBELUM label ada di halaman (di DOM). Letakkan skrip setelah label, atau tunggu hingga dokumen dimuat sepenuhnya (gunakan fungsi OnLoad, seperti jQuery ready()
atau http://www.webreference.com/programming/javascript/onloads/ )
Ini tidak akan berhasil:
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>
Ini akan berhasil:
<label id="lbltipAddedComment">test</label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
Contoh ini (jsfiddle link) mempertahankan urutan (skrip dulu, lalu label) dan menggunakan 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>
Sudahkah Anda mencoba .innerText
atau .value
bukannya .innerHTML
?
.value
forlabel
.text('Your Text')
Karena elemen label tidak dimuat saat skrip dijalankan. Tukar label dan elemen skrip, dan itu akan berfungsi:
<label id="lbltipAddedComment"></label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
Gunakan .textContent
sebagai gantinya.
Saya juga berjuang untuk mengubah nilai label, sampai saya mencobanya.
Jika ini tidak menyelesaikan, coba periksa objek untuk melihat properti apa yang dapat Anda setel dengan memasukkannya ke konsol console.dir
seperti yang ditunjukkan pada pertanyaan ini: Bagaimana cara membuat log elemen HTML sebagai objek JavaScript?
"enter info here:"
bagian dari berikut: <label id='myLabel'>enter info here:<input type='text' id='inp'/></label>
. Hanya .textContent
bekerja, dan tidak ada .innerHTML
, .innerText
atau .value
berhasil. (Penafian: Saya hanya memeriksa di Chrome.)
.textContent
dan .innerText
(meskipun baik-baik saja untuk membaca), tidak berfungsi untuk firefox60 saya untuk menulis (itu juga menghapus bidang input yang disematkan, sama seperti .innerHTML
). Jadi saya harus menggunakan document.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(tentu saja, indeks mungkin sesuatu yang lain dari 0, yang membuat sedikit kludgy tapi berhasil untuk saya)
Berikut cara lain untuk mengubah teks label menggunakan jQuery:
<script>
$("#lbltipAddedComment").text("your tip has been submitted!");
</script>
Periksa contoh JsFiddle
Coba ini:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>