Salah satu kemampuan JavaScript yang paling unik dan berguna adalah kemampuannya untuk memanipulasi DOM. Tapi apa itu DOM, dan bagaimana kita mengubahnya? Show Bagian ini berisi gambaran umum tentang topik yang akan Anda pelajari dalam pelajaran ini
DOM (atau Model Objek Dokumen) adalah representasi seperti pohon dari konten halaman web - pohon "simpul" dengan hubungan yang berbeda tergantung pada bagaimana mereka diatur dalam dokumen HTML
Dalam contoh di atas, _6 adalah “anak” dari 7 dan saudara dari 8. Anggap saja seperti silsilah keluarga. _7 adalah orang tua, dengan anak-anaknya di tingkat berikutnya, masing-masing di "cabang" mereka sendiriSaat bekerja dengan DOM, Anda menggunakan "penyeleksi" untuk menargetkan node yang ingin Anda kerjakan. Anda dapat menggunakan kombinasi pemilih gaya CSS dan properti hubungan untuk menargetkan node yang Anda inginkan. Mari kita mulai dengan pemilih gaya CSS. Dalam contoh di atas, Anda dapat menggunakan pemilih berikut untuk merujuk ke 6
Anda juga dapat menggunakan pemilih relasional (mis. e. 1 atau 2 dll. ) dengan properti khusus yang dimiliki oleh node _Jadi, Anda mengidentifikasi simpul tertentu berdasarkan hubungannya dengan simpul di sekitarnya Saat kode HTML Anda diuraikan oleh browser web, kode tersebut diubah menjadi DOM seperti yang disebutkan di atas. Salah satu perbedaan utamanya adalah node ini adalah objek yang memiliki banyak properti dan metode yang melekat padanya. Properti dan metode ini adalah alat utama yang akan kita gunakan untuk memanipulasi halaman web kita dengan JavaScript. Kami akan mulai dengan pemilih kueri - yang membantu Anda menargetkan node Pemilih Kueri
*Ada beberapa kueri lain yang lebih spesifik, yang menawarkan potensi manfaat kinerja (marjinal), tetapi kami tidak akan membahasnya sekarang Penting untuk diperhatikan bahwa saat menggunakan querySelectorAll, nilai yang dikembalikan bukanlah larik. Ini terlihat seperti larik, dan agak bertindak seperti larik, tetapi ini benar-benar sebuah "nodelist". Perbedaan besar adalah bahwa beberapa metode array hilang dari nodelists. Salah satu solusinya, jika muncul masalah, adalah mengubah nodelist menjadi array. Anda dapat melakukan ini dengan Array. from() atau operator spread Penciptaan Elemen
_Fungsi ini TIDAK memasukkan elemen baru Anda ke dalam DOM - ini hanya membuatnya di memori. Ini agar Anda dapat memanipulasi elemen (dengan menambahkan gaya, kelas, id, teks, dll. ) sebelum meletakkannya di halaman. Anda dapat menempatkan elemen ke dalam DOM dengan salah satu metode berikut Tambahkan Elemen
Hapus Elemen
Mengubah ElemenSaat Anda memiliki referensi ke suatu elemen, Anda dapat menggunakan referensi tersebut untuk mengubah properti elemen itu sendiri. Ini memungkinkan Anda melakukan banyak perubahan yang berguna, seperti menambah/menghapus dan mengubah atribut, mengubah kelas, menambahkan informasi gaya sebaris, dan lainnya _Menambahkan Gaya Inline
Lihat Pencerahan DOM untuk info selengkapnya tentang gaya sebaris Perhatikan bahwa jika Anda mengakses aturan CSS dengan huruf kebab dari JS, Anda harus menggunakan camelCase atau Anda harus menggunakan notasi braket alih-alih notasi titik
Mengedit Atribut
Lihat bagian MDN tentang Atribut HTML untuk info lebih lanjut tentang atribut yang tersedia Bekerja dengan Kelas
Seringkali standar (dan lebih bersih) untuk mengganti gaya CSS daripada menambah dan menghapus CSS sebaris Menambahkan Konten Teks
Menambahkan Konten HTML
*Perhatikan bahwa textContent lebih disukai untuk menambahkan teks, dan innerHTML harus digunakan dengan hemat karena dapat menimbulkan risiko keamanan jika disalahgunakan. Lihat video ini jika Anda ingin melihat contoh caranya Mari luangkan waktu sebentar untuk meninjau apa yang telah kita bahas dan memberi Anda kesempatan untuk mempraktikkan hal ini sebelum melanjutkan. Lihat contoh membuat dan menambahkan elemen DOM ini ke halaman web 0 1Di file JavaScript, pertama-tama kita mendapatkan referensi ke div 4 yang sudah ada di HTML kita. Kemudian kita membuat div baru dan menyimpannya dalam variabel 5. Kami menambahkan kelas dan beberapa teks ke 5 div dan akhirnya menambahkan div itu ke 4. Semua dalam semua itu adalah proses yang sederhana. Setelah kode JavaScript dijalankan, pohon DOM kita akan terlihat seperti ini _2Ingatlah bahwa JavaScript tidak mengubah HTML Anda, tetapi DOM - file HTML Anda akan terlihat sama, tetapi JavaScript mengubah apa yang dirender oleh browser JavaScript Anda, sebagian besar, dijalankan setiap kali file JS dijalankan, atau ketika tag skrip ditemukan di HTML. Jika Anda menyertakan JavaScript di bagian atas file, banyak dari metode manipulasi DOM ini tidak akan berfungsi karena kode JS dijalankan sebelum node dibuat di DOM. Cara termudah untuk memperbaikinya adalah dengan memasukkan JavaScript Anda di bagian bawah file HTML Anda sehingga dapat dijalankan setelah node DOM diuraikan dan dibuat Atau, Anda dapat menautkan file JavaScript di 8 dokumen HTML Anda. Gunakan tag _9 dengan atribut 0 yang berisi jalur ke file JS, dan sertakan kata kunci 1 untuk memuat file setelah HTML diuraikan, seperti itu _3Baca poin kedua untuk informasi lebih lanjut, yang juga menyertakan tautan ke strategi pemuatan skrip tambahan Salin contoh di atas ke dalam file di komputer Anda sendiri. Untuk membuatnya berfungsi, Anda harus menyediakan kerangka HTML lainnya dan menautkan file JavaScript Anda, atau memasukkan JavaScript ke dalam tag skrip di laman. Pastikan semuanya berfungsi sebelum melanjutkan Tambahkan elemen berikut ke wadah HANYA menggunakan JavaScript dan metode DOM yang ditampilkan di atas
Sekarang kita memiliki pegangan untuk memanipulasi DOM dengan JavaScript, langkah selanjutnya adalah belajar bagaimana mewujudkannya secara dinamis, atau sesuai permintaan. Acara adalah cara Anda membuat keajaiban itu terjadi di halaman Anda. Peristiwa adalah tindakan yang terjadi di laman web Anda seperti klik mouse atau penekanan tombol, dan dengan menggunakan JavaScript, kami dapat membuat laman web kami mendengarkan dan bereaksi terhadap peristiwa ini Ada tiga cara utama untuk melakukannya. Anda dapat melampirkan atribut fungsi langsung pada elemen HTML Anda, Anda dapat menyetel properti "on_event_" pada objek DOM di JavaScript Anda, atau Anda dapat melampirkan pendengar acara ke node di JavaScript Anda. Pendengar acara jelas merupakan metode yang disukai, tetapi Anda akan sering melihat yang lain digunakan, jadi kami akan membahas ketiganya Kami akan membuat 3 tombol yang semuanya mengingatkan "Halo Dunia" saat diklik. Cobalah semuanya menggunakan file HTML Anda sendiri, atau gunakan sesuatu seperti CodePen Metode 1 _4Solusi ini kurang ideal karena kami mengacaukan HTML kami dengan JavaScript. Selain itu, kami hanya dapat memiliki 1 acara "onclick" per elemen Metode 2 5 6(Perlu meninjau fungsi panah?)Ini sedikit lebih baik. Kami telah memindahkan JS dari HTML ke file JS, tetapi kami masih memiliki masalah bahwa elemen DOM hanya dapat memiliki 1 properti "onclick" Metode 3 7 8Sekarang, kami mempertahankan pemisahan masalah, dan kami juga mengizinkan beberapa pendengar acara jika diperlukan. Metode 3 jauh lebih fleksibel dan kuat, meskipun sedikit lebih rumit untuk disiapkan Perhatikan bahwa ketiga metode ini dapat digunakan dengan fungsi bernama seperti itu _9 0Menggunakan fungsi bernama dapat sangat membersihkan kode Anda, dan merupakan ide yang sangat bagus jika fungsi tersebut adalah sesuatu yang ingin Anda lakukan di banyak tempat Dengan ketiga metode tersebut, kita dapat mengakses lebih banyak informasi tentang peristiwa tersebut dengan meneruskan parameter ke fungsi yang kita panggil. Coba ini di mesin Anda sendiri _1*Perhatikan bahwa _0 adalah panggilan balik dari addEventListener. Penjelasan lebih lanjut tentang panggilan balik dapat ditemukan DI SINI _1 dalam fungsi itu adalah objek yang mereferensikan peristiwa itu sendiri. Di dalam objek itu Anda memiliki akses ke banyak properti dan fungsi yang berguna seperti tombol atau tombol mouse mana yang ditekan, atau informasi tentang target acara - simpul DOM yang diklikCoba ini _2dan sekarang ini _3Cukup keren, ya? Melampirkan Pendengar ke Grup NodeIni mungkin tampak seperti banyak kode jika Anda melampirkan banyak pendengar acara serupa ke banyak elemen. Ada beberapa cara untuk melakukannya dengan lebih efisien. Kami belajar di atas bahwa kami bisa mendapatkan nodelist dari semua item yang cocok dengan pemilih tertentu dengan 2. Untuk menambahkan pendengar ke masing-masing, kita hanya perlu mengulangi seluruh daftar seperti itu _4 5Ini hanyalah puncak gunung es dalam hal manipulasi DOM dan penanganan event, tetapi ini cukup untuk membantu Anda memulai dengan beberapa latihan. Dalam contoh kami sejauh ini kami telah menggunakan acara 'klik' secara eksklusif, tetapi masih banyak lagi yang tersedia untuk Anda Beberapa acara bermanfaat termasuk
Anda dapat menemukan daftar yang lebih lengkap dengan penjelasan setiap acara di halaman ini Memanipulasi halaman web adalah manfaat utama dari bahasa JavaScript. Teknik-teknik ini adalah hal-hal yang kemungkinan besar akan Anda mainkan setiap hari sebagai pengembang front-end, jadi mari berlatih
Bagian ini berisi pertanyaan bagi Anda untuk memeriksa sendiri pemahaman Anda tentang pelajaran ini. Jika Anda kesulitan menjawab pertanyaan, klik dan tinjau materi yang ditautkan
Bagian ini berisi tautan bermanfaat ke konten terkait. Itu tidak wajib, jadi anggap itu tambahan Mengapa menggunakan createElement alih-alih innerHTML?Anda harus menggunakan createElement jika Anda ingin menyimpan referensi dalam kode Anda . InnerHTML terkadang dapat membuat bug yang sulit dikenali.
Mengapa menggunakan createElement di JavaScript?createElement() digunakan untuk secara dinamis membuat simpul elemen HTML dengan nama yang ditentukan melalui JavaScript . Metode ini mengambil nama elemen sebagai parameter dan membuat node elemen tersebut.
Apa kerugian utama menggunakan innerHTML dalam JavaScript?Tetapi ada beberapa kelemahan menggunakan innerHTML dalam JavaScript. Kerugian menggunakan properti innerHTML dalam JavaScript. Penggunaan innerHTML sangat lambat . Proses menggunakan innerHTML jauh lebih lambat karena kontennya dibangun dengan lambat, juga konten yang sudah diurai dan elemen juga diurai ulang yang membutuhkan waktu.
Apa yang lebih baik dari innerHTML?Elemen ini kuat dan memiliki beberapa kode yang sangat menyenangkan. Catatan. Tidak seperti innerHTML, textContent memiliki kinerja yang lebih baik karena nilainya tidak diuraikan sebagai HTML. Oleh karena itu, penggunaan textContent juga dapat mencegah serangan Cross-Site Scripting (XSS). |