Saya perlu mengatur teks dalam elemen DIV secara dinamis. Apa yang terbaik, pendekatan aman browser? Saya memiliki prototypej dan skrip tersedia.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Seperti apa fungsinya nanti:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
merah muda
sumber
sumber
Jawaban:
Saya akan menggunakan
update
metode Prototipe yang mendukung teks biasa, cuplikan HTML, atau objek JavaScript apa pun yang menentukantoString
metode.sumber
$("field_name").text("new text");
Anda cukup menggunakan:
sumber
element.innerHTML = "<script>doSomethingMalicious()</script>";
tidak akan menjadi ide yang bagus.element.innerHTML = "& neither will this";
Diperbarui untuk semua orang yang membaca ini di 2013 dan yang lebih baru:
Jawaban ini memiliki banyak SEO, tetapi semua jawaban sangat ketinggalan zaman dan bergantung pada perpustakaan untuk melakukan hal-hal yang semua browser saat ini lakukan di luar kotak.
Untuk mengganti teks di dalam elemen div, gunakan Node.textContent, yang disediakan di semua browser saat ini.
sumber
textContent
metode yang lebih baikinnerHTML
: lebih cepat, lebih aman, dan lebih tepat jika tidak sengaja mencoba menyisipkan markup HTML.Keuntungan melakukannya dengan cara ini:
Jika saya akan menggunakan perpustakaan javascript, saya akan menggunakan jQuery, dan lakukan ini:
Perhatikan bahwa komentar @AnthonyWJones benar: "field_name" bukan id deskriptif atau nama variabel.
sumber
Salah satu fitur bagus dari Prototype adalah
$('field_name')
melakukan hal yang samadocument.getElementById('field_name')
. Gunakan! :-)Jawaban John Topley menggunakan
update
fungsi Prototype adalah solusi bagus lainnya.sumber
$
mencari item dengan ID. Ini bukan berbasis pemilih seperti jQuery. api.prototypejs.org/dom/dollarJawaban cepatnya adalah menggunakan innerHTML (atau metode pembaruan prototipe yang hampir sama). Masalah dengan innerHTML adalah Anda harus keluar dari konten yang ditugaskan. Bergantung pada target Anda, Anda perlu melakukannya dengan kode lain ATAU
di IE: -
dalam FF: -
(Sebenarnya FF memiliki kode berikut ini)
Sekarang saya bisa menggunakan innerText jika Anda membutuhkan dukungan browser seluas mungkin maka ini bukan solusi yang lengkap tetapi tidak menggunakan innerHTML di internet.
sumber
Jika Anda benar-benar ingin kami melanjutkan di mana Anda tinggalkan, Anda bisa melakukan:
sumber
nodeValue juga merupakan properti DOM standar yang dapat Anda gunakan:
sumber
sumber
Jika Anda cenderung mulai menggunakan banyak JavaScript di situs Anda, jQuery membuat bermain dengan DOM menjadi sangat sederhana.
http://docs.jquery.com/Manipulation
Jadikan sesederhana: $ ("# bidang-nama"). Teks ("Beberapa teks baru.");
sumber
Gunakan innerText jika Anda tidak dapat menganggap struktur - Gunakan data Teks # untuk memperbarui Tes Kinerja teks yang ada
sumber
sumber
Ini cara jQuery yang mudah :
sumber
Dalam HTML taruh ini
Dalam Javascript taruh ini
sumber