Mengambil Elemen HTML Secara Dinamis dengan Item HTML Collection
Ketika membangun website interaktif dengan JavaScript, kita sering kali perlu mengambil dan memanipulasi banyak elemen HTML sekaligus. Salah satu cara efektif untuk melakukannya adalah dengan HTMLCollection, yang memungkinkan kita mengakses elemen-elemen berdasarkan tag name, class, atau id.
Di artikel ini, kita akan membahas cara mengambil elemen HTML secara dinamis menggunakan Item HTMLCollection, membandingkannya dengan NodeList, dan memberikan contoh penggunaan yang mudah dipahami. Dengan pemahaman ini, kamu bisa meningkatkan keterampilan JavaScript-mu dan membuat interaksi web lebih fleksibel dan efisien.
Apa Itu HTMLCollection?
Sebelum kita masuk ke cara mengambil elemen HTML secara dinamis, mari pahami dulu apa itu HTMLCollection. HTMLCollection adalah kumpulan elemen HTML yang dikembalikan oleh metode seperti:
document.getElementsByTagName()
→ Mengambil elemen berdasarkan nama tagdocument.getElementsByClassName()
→ Mengambil elemen berdasarkan nama kelasdocument.forms
→ Mengambil semua elemen<form>
dalam dokumendocument.images
→ Mengambil semua elemen<img>
dalam dokumendocument.links
→ Mengambil semua elemen<a>
dalam dokumen
Salah satu cara utama untuk mengakses elemen dalam HTMLCollection adalah menggunakan item(), yang memungkinkan kita mengambil elemen berdasarkan indeksnya, mirip seperti array.
Cara Menggunakan item()
dalam HTMLCollection
Metode item()
pada HTMLCollection digunakan untuk mengambil elemen berdasarkan indeksnya.
1. Menggunakan getElementsByTagName
dengan item()
Misalnya, kita ingin mengambil semua paragraf (<p>
) dalam halaman web:
<p>Paragraf pertama</p>
<p>Paragraf kedua</p>
<p>Paragraf ketiga</p>
<button onclick="ubahTeks()">Ubah Paragraf</button>
<script>
function ubahTeks() {
let paragraf = document.getElementsByTagName("p");
let elemenPertama = paragraf.item(0); // Ambil elemen pertama
elemenPertama.textContent = "Teks ini telah diubah!";
}
</script>
Ketika tombol diklik, teks paragraf pertama akan berubah. item(0)
mengambil elemen pertama dari HTMLCollection.
2. Menggunakan getElementsByClassName
dengan item()
Jika ingin mengambil elemen berdasarkan kelas, gunakan getElementsByClassName()
:
<div class="kotak">Kotak 1</div>
<div class="kotak">Kotak 2</div>
<div class="kotak">Kotak 3</div>
<button onclick="ubahKotak()">Ubah Kotak Pertama</button>
<script>
function ubahKotak() {
let kotak = document.getElementsByClassName("kotak");
kotak.item(0).style.backgroundColor = "blue";
}
</script>
Ketika tombol diklik, latar belakang kotak pertama akan berubah menjadi biru.
HTMLCollection vs NodeList
Banyak yang bingung antara HTMLCollection dan NodeList. Meskipun keduanya mirip, ada beberapa perbedaan utama:
Fitur | HTMLCollection | NodeList |
---|---|---|
Bisa diperbarui secara dinamis? | ✅ Ya | ❌ Tidak |
Mendukung .forEach() ? |
❌ Tidak | ✅ Ya |
Diakses dengan item() ? |
✅ Ya | ✅ Ya |
Diakses dengan indeks? | ✅ Ya | ✅ Ya |
Kesimpulan: Jika butuh elemen yang diperbarui secara real-time (misalnya, elemen yang berubah setelah manipulasi DOM), gunakan HTMLCollection. Jika hanya ingin mengakses elemen statis, NodeList bisa jadi pilihan lebih baik.
Keuntungan Menggunakan item()
dalam HTMLCollection
✅ Lebih cepat dibandingkan querySelectorAll() – Karena HTMLCollection lebih ringan.
✅ Terupdate secara dinamis – Setiap kali DOM berubah, HTMLCollection langsung mengikuti.
✅ Mempermudah pengambilan elemen dengan indeks – Ideal untuk manipulasi batch elemen.
Namun, ada juga kekurangan: ❌ Tidak bisa langsung menggunakan forEach() – Harus dikonversi ke array dulu.
❌ Tidak fleksibel seperti querySelectorAll() – Hanya bisa digunakan dengan metode spesifik.
Menggunakan HTMLCollection dengan Loop
Karena HTMLCollection tidak mendukung .forEach()
, kita bisa menggunakan loop seperti for
untuk memproses banyak elemen sekaligus:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<button onclick="ubahSemuaItem()">Ubah Semua Item</button>
<script>
function ubahSemuaItem() {
let items = document.getElementsByTagName("li");
for (let i = 0; i < items.length; i++) {
items[i].textContent = "Item " + (i + 1) + " telah diubah";
}
}
</script>
Setiap kali tombol diklik, teks dalam setiap <li>
akan diperbarui.
Kesimpulan
- HTMLCollection adalah kumpulan elemen HTML yang diperbarui secara dinamis.
item()
memudahkan pengambilan elemen berdasarkan indeks, mirip dengan array.- Bisa digunakan dengan
getElementsByTagName()
,getElementsByClassName()
,forms
,images
, danlinks
. - Berbeda dengan NodeList, karena HTMLCollection selalu diperbarui ketika DOM berubah.
- Jika ingin mengakses semua elemen, gunakan loop seperti
for
karena HTMLCollection tidak mendukung.forEach()
langsung.
Dengan memahami cara mengambil elemen HTML secara dinamis menggunakan item() dalam HTMLCollection, kita bisa membangun situs yang lebih responsif, cepat, dan interaktif!