JavaScript DOM (Document Object Model)

Mata Kuliah: Pemrograman Berbasis Web


🧭 1. Pengertian DOM

https://images.openai.com/static-rsc-4/ZL_ILpBh2K52oYNuckSL59T92SkMAKYZlwVYsQL-LOqNYrJS5JVAOXE6dYNe-DR05cz4joAgZGmw2DJfwBVmxoPIE21fWxfHhjH340BjQPVng6R0Y3Rum1N0himKi79z4BAKVYUeJG5exyuImXzicaSuvV7nrqU0_bTCF1CDYZtm1iulvCD6Mmfud1t13Fm8?purpose=fullsize
https://images.openai.com/static-rsc-4/nBGLhoesJ9qyTn2gJBtE_DRwxUPH84SJZf0v41NjcOJK-zhLrffxBd2GbvGJscNVgEPFv1xl3ukopSnfyz1UZYlLTXfS19NdPSJ07CGIvBoVkgXnSIGuWDxQ3RyFCkhwOrVTO1hS1-VS2M4csTXqa0X3B1_U8aZBqafqIRsr7QxG4aj9fsulw8TmgDJxRu8P?purpose=fullsize
https://images.openai.com/static-rsc-4/zbCYznWtNYoEPa-rIARZSGlit0CfOhYQDBK3Alf4EoMAb44Ddupc6APVQ2hglqHzp8t8eWV0Dx41NvGRf3GsFPHQmelwRcB9jGg2hybcJy-94jFI44_Cex5qGD5QqAzkY2YMksd1_I8YaTLKAwGhQNTG6dYWI2LO5AdHjVBaikVDWqNU063ZeGyPs6PcxVaK?purpose=fullsize

7

πŸ“– Deskripsi

DOM (Document Object Model) adalah representasi dokumen HTML dalam bentuk struktur objek (tree) yang dapat dimanipulasi menggunakan JavaScript.

🧠 Narasi

Ketika browser membaca HTML, ia tidak langsung menampilkan teks mentah, tetapi mengubahnya menjadi struktur pohon (tree). Setiap tag menjadi node yang bisa diakses dan dimodifikasi. Inilah yang memungkinkan halaman web berubah tanpa reload.


🌳 2. Struktur DOM (DOM Tree)

https://images.openai.com/static-rsc-4/Om8He3CybIOUs7ag6ykPF9m70zyST56yNLYrnpostV08kuOonqWNGsuhpoHoeyvT8TmaYhmx2xq6I5Jf_DVqbklw4iWyQA1nxgtElp8QZVbQWb3duAa-FeLwtl3Bm_RFtRNEOS0iOQjZk0tY29qPdpziEk61ehfYHrWXdlQAysiLPW3EdMbncxz9CRzvswFV?purpose=fullsize
https://images.openai.com/static-rsc-4/_ldy_a081ohjNavIrq6VpzFnbv28qH9tvHqba3QDBzc9Nvx77YM7UFjPA8Q0jC48dGeFuKKn4OXaUCWY4ZsZvsvs8bmTA_wqxDUWY74n2xuD2z98GUbg9pIBmI0NhRWJBugy1EKEvzf3brzQ6zvddAWk80f2uRaKHGbcbdOMUBbJS4BebNcqAuoL7M411O8e?purpose=fullsize
https://images.openai.com/static-rsc-4/1b0wFhhuv2r44DXREeiWl4jdJAkXBqDPuh5HcZkWRC_u7T_ULo5ffDa0p_vS8bm5fQ8Rk6Gfl5Zs1XJFWb1XG0PX6kcCBRoUSJWGz-d-137tMh6sP1E914q7RWPj6ZgbCTWPdlLPOCrv2Vz4LTiIIScqufjeW5lOght-JIgBtJbwa2ohwDHtD6hm51ItXtbn?purpose=fullsize

7

πŸ“– Deskripsi

DOM disusun seperti pohon dengan hubungan:

🧱 Jenis Node

JenisPenjelasan
Root<html>
ParentElemen induk
ChildElemen turunan
SiblingElemen sejajar

🧠 Narasi

Struktur ini penting karena JavaScript bekerja dengan menavigasi node untuk menemukan dan mengubah elemen tertentu.


πŸ” 3. Mengakses Elemen DOM

https://images.openai.com/static-rsc-4/PIv88oCHuHlhtXePY2om-X3IZ9wLWpSrbo8wSE6YpMvdZvkcuYVUBLrcF5G65rI2fT8qMmrMFCJ7l8lrKrY1nlcJnZMibGUgykYNBT1UVWWcl-6ARYZERc8dmDcHYRBndzcs6tgTCyr-tqZn34MH7_tPEimAR56I_gH9Dd2mq7OxYroi6MMI8UV4JvsukAry?purpose=fullsize
https://images.openai.com/static-rsc-4/1b0wFhhuv2r44DXREeiWl4jdJAkXBqDPuh5HcZkWRC_u7T_ULo5ffDa0p_vS8bm5fQ8Rk6Gfl5Zs1XJFWb1XG0PX6kcCBRoUSJWGz-d-137tMh6sP1E914q7RWPj6ZgbCTWPdlLPOCrv2Vz4LTiIIScqufjeW5lOght-JIgBtJbwa2ohwDHtD6hm51ItXtbn?purpose=fullsize
https://images.openai.com/static-rsc-4/kIuGYs5NNEnX1OFZEyuF3ASFDApugo59soMMbBTzqFEVfPeo4XqTbeYK7sYSJ7tmbGLkYlnjKI7lmFZHqwEoOEzxU8-5CzG2IEPphSF886Qpj7z9VrD3GmIYdInZ_5cfLyhIbkzwgfWmSadsaQyW8qaY9PqIQLhxAI_1clSYae613uCVwg07j2K0UGttuhF0?purpose=fullsize

7

πŸ“– Deskripsi

JavaScript menyediakan metode untuk memilih elemen.

🧱 Metode Utama

MetodeFungsi
getElementById()Berdasarkan ID
getElementsByClassName()Berdasarkan class
querySelector()Selector CSS
querySelectorAll()Semua elemen

πŸ’» Contoh

let judul = document.getElementById("judul");

🧠 Narasi

Pemilihan elemen adalah langkah pertama sebelum manipulasi DOM.


✏️ 4. Manipulasi Konten

https://images.openai.com/static-rsc-4/Precz-MVwzf5vMu0QHPVslmf2FMKo4v0MltcyCEZ_83omcTcvGKOLqXSbkXGtTF4RBw2feYuY5ETzzHeaeAR8WdcUuZxjGQuE1Bh0t7ie8D2h0R4KMOGM4ET76Pe_gynMr5UCi4ukaoBoj9o3eCwpGZ2hvsy0cEs17NmgvvAw2E2KoK-YyrxHoOioB5w1oQF?purpose=fullsize
https://images.openai.com/static-rsc-4/ErvVrlz3Q8bx1axGFxxo1jllcvsp1TcctFBY-fKTGC-uwWfZzVcingKoTVL9ii3-wagb4UEhVS1jauFBRSuOz6B9Ju-rFOH1qYQOZjJ5kV_R527-7GpQvoEji7IOIdFOQ4EG2r6mzqtwxez_AtACnLEDCrpqsQHWK61qC4sRgabS3-cBr6kK2LZwn2RNVl8h?purpose=fullsize
https://images.openai.com/static-rsc-4/9rpbyZKixmpDGAdykdEh6Cf6YHzMeZ4BP9-lfHUytBpqeKYlLnfn8eb_diFlfOXpKEf3_lRxxTp6ux9xzgeJTJPeTXxD5tWvuzKoqDSWSRCNmdJJaUDXvFVbXfQVK7IhOuNmGlw7gPtKSe1U-t5HzOfNanKYKz_q27UtwY7zqyWbCXUS_snFOSo6tjRpGZzE?purpose=fullsize

7

πŸ“– Deskripsi

Mengubah isi elemen HTML.

πŸ’» Contoh

document.getElementById("judul").innerHTML = "Belajar DOM";

🧠 Narasi

Manipulasi ini memungkinkan perubahan konten secara real-time tanpa reload halaman.


🎨 5. Manipulasi Atribut & Style

https://images.openai.com/static-rsc-4/Precz-MVwzf5vMu0QHPVslmf2FMKo4v0MltcyCEZ_83omcTcvGKOLqXSbkXGtTF4RBw2feYuY5ETzzHeaeAR8WdcUuZxjGQuE1Bh0t7ie8D2h0R4KMOGM4ET76Pe_gynMr5UCi4ukaoBoj9o3eCwpGZ2hvsy0cEs17NmgvvAw2E2KoK-YyrxHoOioB5w1oQF?purpose=fullsize
https://images.openai.com/static-rsc-4/6z9NFCl-zLqjRL5oqeM1FZ0505oGbcX1q1d4MNqCI8RVv85e79SJTY6LDtxI9vaJB4qs0K3GwfTq2acXoFGihXpQ3lgCZ-NZdIhNCFWSUJAW6y91WJBOmuFwW5InQ9A_SnfdNeKL2PQ-woAiPoaxYZaYC3xYjKnEhQ3Df4niKTu0OQGLm90sCXvxRBKUh4na?purpose=fullsize
https://images.openai.com/static-rsc-4/t2YsXFTT98tbB1gPz4yEXai6BNAlwAWdFtlV_yah0nayB9DFH2lo92Mgf-zsJBZlIdJUdaLwdNvvaD3Sl9pEiF_Ac-40S4acqZt3t3_KlvzVeYppCJipbUjasdcriSvjzWzT_hYdSC_n6cgWdfJdNv3-mQnC6tOtzKF-etRVJQJriAKeDG-U9yHjaMpQRWNA?purpose=fullsize

7

πŸ“– Deskripsi

Mengubah atribut dan tampilan elemen.

πŸ’» Contoh

document.getElementById("box").style.backgroundColor = "red";

🧠 Narasi

JavaScript dapat menggantikan CSS secara dinamis berdasarkan interaksi pengguna.


βž• 6. Menambah dan Menghapus Elemen

https://images.openai.com/static-rsc-4/vlUrbQgZ-LnXpZDT_-yqQmMusIFWHBjQHImgi9FVZ_yr_efv4LVq-JRTX1hGR028nD85OqyN77BqqtkU_v--j6XzOutfplEE6BseFx-o-UeTUyeY3OAeltBZDpXJkg0NvGPk_1pgKAJyBOw7ZToTnPXCQ5c2ivopPxrgQj-7vj-DQlPikBiw_-_AInPAhqD5?purpose=fullsize
https://images.openai.com/static-rsc-4/SWD6BaQEBUc9SuKJg5pqy-JjV8tNkI2JY9VjTnFLGZ5GJWpPo79GxoeaVJFv8rztCAtuiYI729YIrnCpDO0THgacJ2OqUWxLfh1V2bbec33PJUSjNoiiTSlwQqMExfNR6Sk44e9vbxMdFNczXT4JvBMV-NT_ty59IvV_FCRFuc60MRXHBnuhaaHagfd6RTb-?purpose=fullsize
https://images.openai.com/static-rsc-4/-o1KDbm-RMlnwpLL-45cCtWLJ-RhjCJX3rTS7aLnIJZa0TtxkipUcg0oS4-9K-w-R-ImeYD9I4CyJzJ6p_NQbQRuAER2bducAiPjjYTIKSqMRr2FkmuAy1JbJJKXZRSejzPQux-IU0EGjI5QDgAJmQxR4WqHZpZLs_dpihEDeQsf4NXwl4XVLXwv8HAtGwaH?purpose=fullsize

8

πŸ“– Deskripsi

DOM memungkinkan penambahan dan penghapusan elemen.

πŸ’» Contoh

let p = document.createElement("p");
p.innerHTML = "Paragraf baru";
document.body.appendChild(p);

🧠 Narasi

Fitur ini penting untuk membuat aplikasi web dinamis seperti todo list.


πŸ”„ 7. Navigasi DOM

https://images.openai.com/static-rsc-4/1b0wFhhuv2r44DXREeiWl4jdJAkXBqDPuh5HcZkWRC_u7T_ULo5ffDa0p_vS8bm5fQ8Rk6Gfl5Zs1XJFWb1XG0PX6kcCBRoUSJWGz-d-137tMh6sP1E914q7RWPj6ZgbCTWPdlLPOCrv2Vz4LTiIIScqufjeW5lOght-JIgBtJbwa2ohwDHtD6hm51ItXtbn?purpose=fullsize
https://images.openai.com/static-rsc-4/rwNzDzxesJFkRURm5CLAUzbwYgHWxWDalZuR4CGrzcoyjiZdTgI7fEozKF_JC3pd0LeTsafv_GqjVicCpcQNTPy4XD50Nw02JgCWpT8IaknErTnHeqz2l1c9YkoRsG6bbgefPWCukNBj0C7qYbi-GqGUBX6FSAQEdR4FPU_TFFpw6G_TIJSpY2ggoqo-ew9X?purpose=fullsize
https://images.openai.com/static-rsc-4/Q0nKxA7UbGFTJPwvj7YePmLADXUNZqYm9TV_KFkMWqMQgct5Fpx3yAHps_14NoV31R1q8GSS2o1mB0IUJdS8QDr7V57sVSgUL_bNF3TBBPr6cfdqmH577Wl317tPfPbsJLirpydBDocoOMjHAqha2_GE081xitbM37LlDtgrAdD5t3zJLxu0s9Js4NmTQk0y?purpose=fullsize

8

πŸ“– Deskripsi

Mengakses hubungan antar node.

🧱 Properti

PropertiFungsi
parentNodeInduk
childNodesAnak
nextSiblingNode berikutnya

🧠 Narasi

Navigasi membantu berpindah antar elemen tanpa harus mencari ulang.


πŸ–±οΈ 8. Event Handling dalam DOM

https://images.openai.com/static-rsc-4/MjeWPSk66h58B1xNJhIW7wU_gRkml5StHm2cayH9za4SpU9BdmwyZYhq6GEEBZv8YtNXjhUxHLxNEDR1peW9HcI18c9W2_CRzG7QFURbD4T7Jj7BtZc5feVnCND1eNsIRarPuvN-8UgiMgvoyjuwMInNA_UG3WK_A8lh5ck2gGT1fO8G1JtKaPM93Qylvho-?purpose=fullsize
https://images.openai.com/static-rsc-4/Rj4w8b9BomXpX6SDw1nuw_xdvsc2z2gF8cUKy7xn0Cz-pMcMrCB6vKV8gRCFGBqTNWc6bPTGk9jWclrBgLwESqZ5ZJSPZKMkkVfeloEuZQH8ErrzYfUTK4cs58rhY3RqMulctV3DfuBM-RdZubVAcs7-EA9JfHrs88swZWgan7tqBzHDuu8RUDurCpUccoWV?purpose=fullsize
https://images.openai.com/static-rsc-4/J218LqeQM7CbwSYylCoennUSwwGMG07d9Sb_LnLhwkt3RJI3r-RKvgfMLxezLzpS85NxUrfLFzpPNqPXb002OBBKuQBv8pKDD-uxdhsZYIEdP3KTNK_QQkxTJgjY0HxyvR6PFHB4cBGM0Kv9P9JNvMGPxQKjO3JPi8ftCdiDpeKIfuzBRzMmH13pBhW7uyfj?purpose=fullsize

9

πŸ“– Deskripsi

Event memungkinkan interaksi pengguna.

πŸ’» Contoh

document.getElementById("btn").addEventListener("click", function() {
alert("Diklik!");
});

🧠 Narasi

Event membuat halaman web menjadi hidup dan responsif terhadap tindakan pengguna.


πŸ” 9. Event Bubbling & Capturing

https://images.openai.com/static-rsc-4/7Icqsvg0fsRKjQUUj47IzJ0DBjMsS9k39D1eRlJyWUqI8irV6Oh5MEOsym0T3pv4yfWO9ZrX3aooDjcwc-Qze4Lxb062s5xwZwWVM2RaIjZTQ5Ury9jyP-ECkJnAT6C8vQrxyeA8guOvElv2SrV_wqnfdhruxfipmVz8-IIqgnZvNGPJEUmtbj8q5KLqERWf?purpose=fullsize
https://images.openai.com/static-rsc-4/KpJIEdgsOPdx5z2-gHLWj0g2BNcY2kFoWLJ9cwBfjD0uHT2UFkGp9CKMd8HwsvilFEV24XpuIZVJngj7dswNkRFjt0YRtzqvVc1E6bw4oqh46XvIaadnOMnGnceg8s_Vdl8meENYBqZ_eZE6UbPaOkboSTcMjJgMD-Zqkc6G7oXaYAipl4upLoK9sL70uN-Y?purpose=fullsize
https://images.openai.com/static-rsc-4/FyF8jQmucl3ie86IrJ9OFL7_Lnagkt8zb8cnwFzkxtUrQC_DEREJzkeRwZl-_O4omnxFcEV79DjZHn-k1MPw5BdlCQdtkiA5RyOcvthYOLZpwdi5u3MFl-tqFRvPck5SzYAc6dzoLBOUOoX7_55oGoNaZ99gcOkE1sRojpt1rK8cZNFpqgdausyqxYbDF_nj?purpose=fullsize

6

πŸ“– Deskripsi

Event dapat menyebar dalam DOM.

🧠 Narasi

  • Bubbling: dari child ke parent
  • Capturing: dari parent ke child

Memahami ini penting untuk kontrol event kompleks.


πŸ§ͺ 10. Validasi Form dengan DOM

https://images.openai.com/static-rsc-4/MEAsQssD5lLmSkncbxtIn8tAZXLj4RbHWIRWz1LHFQbjzzW-U3M_BKe8zxHqya-GdJOohwzV8e_TEnEKV1S_KGrpxrSHKSN12InfubzIulz7Ii9RmM2DTWlOV9y6URAW6pvQ5iEmbR5kMMNUqeRFgoTpWQ1W8ZIjDhYkZwXONPHYmlV3ttR7WgtOuYs1LNPl?purpose=fullsize
https://images.openai.com/static-rsc-4/CfAmgkHUCjoXejAzy5x_r1VMlBv6OA9Bu4WqY3iGPxJjX1E7hyja6Q4qj0u5jcO7Jd_cwPYVUdyroSaaUqsGHYt6EwtfuxreySr8THzsE1Iue63zZ65595guJGhnyh-M0vh4y1krX6HK758wQuuwJwNigEKeSKWNyGWgfQo2KVaiN2Dwm1cLLz5NQLQ6Ck_1?purpose=fullsize
https://images.openai.com/static-rsc-4/pGRTDqJDJNitK4Xf62A5Jw7cPXZSo90QitXfF_89Var2Z4jVbiFlPgqDtuGpfTj4H42zBS3FzVkKAwwM3fXgeASomIzMG2Oslx_AZdfOumKwAgjMd8yMFCNr0663DnoLtwmi9DsfXzLM6O1WilxIi2OBNUCyGcIh6NRruvdmAp-QGTac6WFzb1zss6BgKEd5?purpose=fullsize

8

πŸ“– Deskripsi

Validasi memastikan input benar.

πŸ’» Contoh

if (document.getElementById("nama").value == "") {
alert("Nama wajib diisi");
}

🧠 Narasi

Validasi penting untuk menjaga kualitas data.


⚠️ 11. Kesalahan Umum DOM

https://images.openai.com/static-rsc-4/MqPxwfznzIc8cwvcVUEBKhn3kKXmyBLn4fyBYdYn1Q-02MAr6DT35KfveB6yPV4Q5fnwcJQG_DDRzdjfK-2MDFAPeoueoTackSh9Nht7s3zFWIeQ3ygbnKUxeVOMWzd3WhZgLx2RSsNe3DOEAiGpZEXmd_pTiHm96x6JeSR56Exc7pEisMgMzm9VA9xyaoPc?purpose=fullsize
https://images.openai.com/static-rsc-4/tvX4bN-5Yyj_xRJT_YzuPp2ZHYYcF7ONOyfHJK4rxaw2C4ZOnxbdtBAFWVeub8BdWdmqaA9pFJFXm7XEhdQcGz708a_UzPuwFGgv5bmU23ipDavrhgGuIehF-48UleTwFi0inWLxApqoKEyhTp9fFLJbwBNriaYW0QpkeQLlH5H69TqFmhNw194s2EoobKkv?purpose=fullsize
https://images.openai.com/static-rsc-4/7fR2ckG9EHJ7v8WuJQbCK2uBG2H8TKDPSFQxI188EOc_qrFX1SzuSrlsEKm0Q1P0Ln2ZQhGWaTJAf3wKJGyA_B_yO738m8hoMZspyGqDwZfYIKB3xX-0bkOBbOQdPd6XuhOgsjiZKj14zkAtb23NdGubRXNRQam3pxEOaCCDZfKeMUArH7RtfVHB0DSirkO1?purpose=fullsize

6

πŸ“– Deskripsi

Kesalahan yang sering terjadi:

  • Elemen tidak ditemukan
  • Script dijalankan sebelum DOM siap
  • Salah selector

🧠 Narasi

Gunakan:

  • console.log()
  • Developer tools

πŸ§ͺ 12. Studi Kasus Mini Project

🎯 Tugas

Buat aplikasi:

  • Input teks
  • Tombol tambah
  • Tampilkan ke list
  • Bisa hapus item

Gunakan:

  • DOM manipulation
  • Event handling

🎯 13. Kesimpulan

  • DOM adalah jembatan HTML dan JavaScript
  • Manipulasi DOM membuat web dinamis
  • Event adalah inti interaksi
  • Navigasi DOM penting untuk efisiensi

πŸŽ“ Penutup

Materi ini menjadi dasar untuk:
➑️ AJAX & Fetch API
➑️ Single Page Application (SPA)
➑️ Framework seperti Vue.js