Saya ingin mengganti konten di dalam elemen html jadi saya menggunakan fungsi berikut untuk itu:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Di atas berfungsi dengan baik tetapi masalahnya adalah saya memiliki lebih dari satu elemen html pada halaman yang ingin saya ganti konten. Jadi saya tidak bisa menggunakan id tetapi kelas. Saya telah diberitahu bahwa javascript tidak mendukung semua jenis elemen inbuilt get oleh fungsi kelas. Jadi bagaimana kode di atas dapat direvisi agar berfungsi dengan kelas, bukan id?
PS Saya tidak ingin menggunakan jQuery untuk ini.
sumber
class
sebagai nama variabel tidak berfungsi di Safari, sehingga saat ini berdampak.elems[i].className
, mengatakan,var cn
dan menggunakancn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
akan bekerja lebih baik karena cocok dengan spasi putih (spasi, ruang non-breaking, tab, dll.) sementara juga memungkinkan nama kelas pertama / terakhir dicocokkan. Contoh: jsfiddle.net/AXdtH/1636Tentu saja, semua browser modern sekarang mendukung cara yang lebih sederhana berikut:
tetapi berhati-hatilah itu tidak bekerja dengan IE8 atau sebelumnya. Lihat http://caniuse.com/getelementsbyclassname
Juga, tidak semua browser akan mengembalikan yang murni
NodeList
seperti seharusnya.Anda mungkin masih lebih baik menggunakan perpustakaan lintas-browser favorit Anda.
sumber
querySelectorAll
.Itu akan bekerja di browser "modern" yang menerapkan metode itu (IE8 +).
Jika Anda ingin memberikan dukungan untuk browser lama, Anda dapat memuat mesin pemilih yang berdiri sendiri seperti Sizzle (mini 4KB + gzip) atau Peppy (mini 10K) dan kembali ke sana jika metode kueri pemilih asli tidak ditemukan.
Apakah terlalu berat memuat mesin pemilih supaya Anda bisa mendapatkan elemen dengan kelas tertentu? Mungkin. Namun, skrip tidak terlalu besar dan Anda akan menemukan mesin pemilih berguna di banyak tempat lain di skrip Anda.
sumber
document.querySelector
bekerja di IE8 dan di atasnya: caniuse.com/queryselectorCara sederhana dan mudah
sumber
Saya terkejut tidak ada jawaban menggunakan Ekspresi Reguler. Ini cukup banyak jawaban Andrew , menggunakan
RegExp.test
bukanString.indexOf
, karena tampaknya berkinerja lebih baik untuk beberapa operasi, menurut tes jsPerf .Tampaknya juga didukung pada IE6 .
Jika Anda sering mencari kelas yang sama, Anda dapat lebih meningkatkannya dengan menyimpan ekspresi reguler (dikompilasi) di tempat lain, dan meneruskannya langsung ke fungsi, alih-alih string.
sumber
Ini harus berfungsi di hampir semua browser ...
Anda harus dapat menggunakannya seperti ini:
sumber
sumber
Saya menganggap ini bukan opsi yang valid ketika ini awalnya diminta, tetapi Anda sekarang dapat menggunakan
document.getElementsByClassName('');
. Sebagai contoh:Lihat dokumentasi MDN untuk lebih lanjut.
sumber
Saya pikir sesuatu seperti:
akan bekerja
sumber
jQuery menangani ini dengan mudah.
Ini mengubah semua elemen .myclass ke teks itu.
sumber
Ketika beberapa elemen kekurangan ID, saya menggunakan jQuery seperti ini:
Ini mungkin solusi yang aneh, tetapi mungkin seseorang merasa berguna.
sumber
myclass
, semuanya akan mendapatkan idmyid
, tetapi id harus unik! Selain itu, OP secara eksplisit mengatakan untuk menghindari jQuery.