Latihan buat 14 Document Object Model. Butuh DOM sungguhan — jalankan di playground iframe atau di halaman HTML. Konsep: membuat/menyusun node, navigasi rekursif, dan animasi. Jawaban di 14 Kunci Jawaban DOM.
14.1 Membangun Tabel
Dari array objek data, bangun tabel HTML secara terprogram: baris pertama header berisi nama kolom, baris berikutnya isinya. Sisipkan ke dokumen.
Contoh data:
let data = [
{nama: "Kucing", kaki: 4},
{nama: "Ayam", kaki: 2}
];Petunjuk: pakai document.createElement untuk table, tr, th (header), td (data). Ambil nama kolom dengan Object.keys(data[0]). Loop bikin baris header dulu, lalu satu tr per objek data. Rangkai dengan appendChild, lalu tempel tabelnya ke document.body. Konsep di 14 Document Object Model > Membuat Node.
→ Jawaban: 14 Kunci Jawaban DOM > 14.1 Membangun Tabel
14.2 Elemen berdasarkan Nama Tag
Tulis sendiri fungsi byTagName(node, tagName) yang mengembalikan array semua elemen keturunan node dengan nama tag itu (mirip getElementsByTagName, tapi buatan sendiri).
Kode awal:
function byTagName(node, tagName) {
// tulis kodemu di sini
}
console.log(byTagName(document.body, "h1").length);Petunjuk: rekursif. Untuk tiap node, kalau ia elemen dan node.nodeName.toLowerCase() sama dengan tagName, masukkan ke hasil; lalu turun ke tiap anak di childNodes dan gabungkan. nodeName elemen adalah nama tag dalam huruf besar. Konsep di 14 Document Object Model > Navigasi Antar Node.
→ Jawaban: 14 Kunci Jawaban DOM > 14.2 Elemen berdasarkan Nama Tag
14.3 Topi Kucing
Animasikan gambar topi supaya mengorbit gambar kucing (kucing juga bergerak melingkar, topi di sisi berlawanan).
Kode awal (HTML):
<img src="cat.png" id="cat" style="position: absolute">
<img src="hat.png" id="hat" style="position: absolute">Petunjuk: pakai requestAnimationFrame, hitung posisi dari satu sudut yang naik seiring waktu. Kucing di (sin(a), cos(a)) dikali jari-jari; topi di sudut a + Math.PI (berlawanan). Update kedua style.top/style.left di satu callback. Konsep di 14 Document Object Model > Positioning dan Animasi.
→ Jawaban: 14 Kunci Jawaban DOM > 14.3 Topi Kucing