Mencipta dan Menambahkan Elemen
Gunakan createElement, setAttribute, append dan remove untuk membina serta mengubah suai struktur DOM secara dinamik.
Mencipta dan Menambahkan Elemen ialah pelajaran Frontend Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Frontend Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Frontend Academy merangkumi sejumlah 4 pelajaran.
createElement
document.createElement(tagName) mencipta elemen baharu dalam memori — elemen itu belum berada dalam DOM. Kemudian, tetapkan sifatnya dan gunakan append untuk menambahkannya pada pepohon.
const btn = document.createElement('button');
btn.textContent = 'Click Me';
btn.classList.add('btn-primary');
btn.setAttribute('type', 'button');
// btn is in memory, not yet in the pageappend dan appendChild
parent.append(child) menambah nod atau rentetan pada penghujung anak parent. appendChild ialah padanan yang lebih lama, tetapi append lebih fleksibel — ia menerima berbilang nod dan rentetan.
const list = document.querySelector('ul');
const item = document.createElement('li');
item.textContent = 'New item';
list.append(item); // adds to end of listprepend, sebelum, after
parent.prepend() menambah pada permulaan. element.before() menyisipkan sebelum elemen. element.after() menyisipkan selepasnya.
const header = document.querySelector('.card-header');
const icon = document.createElement('img');
icon.src = 'icon.svg';
header.prepend(icon); // icon goes before all other children
const divider = document.createElement('hr');
header.after(divider); // divider goes after the headerinsertAdjacentHTML
element.insertAdjacentHTML(position, htmlString) menyisipkan HTML pada kedudukan yang ditentukan tanpa menggantikan kandungan sedia ada. Kedudukan: 'beforebegin', 'afterbegin', 'beforeend', 'afterend'.
const container = document.querySelector('.list');
container.insertAdjacentHTML('beforeend', `
<li class="item">
<span class="name">Alice</span>
</li>
`);
// Still avoid with user input — XSS riskcloneNode
element.cloneNode(true) mencipta salinan mendalam bagi elemen termasuk semua anaknya. Hantar false untuk salinan cetek. Berguna untuk menduplikasi elemen template.
const template = document.querySelector('.card-template');
const clone = template.cloneNode(true);
clone.querySelector('.card-title').textContent = 'New Card';
container.append(clone);removeChild dan remove()
element.remove() membuang elemen daripada DOM. parent.removeChild(child) yang lebih lama juga berfungsi. Elemen yang dibuang masih boleh dirujuk dalam pemboleh ubah dan ditambah semula.
const item = document.querySelector('.to-delete');
item.remove(); // clean modern syntaxreplaceWith
oldElement.replaceWith(newElement) menggantikan elemen lama dalam DOM dengan elemen baharu. Lebih mudah berbanding corak replaceChild yang lebih lama.
const old = document.querySelector('.old-banner');
const fresh = document.createElement('div');
fresh.className = 'new-banner';
fresh.textContent = 'Updated!';
old.replaceWith(fresh);DocumentFragment untuk Sisipan Kelompok
DocumentFragment ialah container ringan yang tidak wujud dalam DOM. Bina subpokok di dalamnya, kemudian tambahkan semuanya dalam satu operasi — ini hanya menyebabkan satu penyusunan semula dan bukannya N.
const fragment = document.createDocumentFragment();
users.forEach(user => {
const li = document.createElement('li');
li.textContent = user.name;
fragment.append(li);
});
// One DOM write:
document.querySelector('ul').append(fragment);Elemen <template>
Elemen HTML <template> menyimpan penanda yang tidak dipaparkan sehingga diklon dengan JavaScript. Lebih baik daripada membina rentetan atau mengklon elemen yang kelihatan.
<template id="card-tpl">
<div class="card">
<h3 class="card-title"></h3>
<p class="card-body"></p>
</div>
</template>Menetapkan Sifat Berbanding Atribut
Sifat elemen (el.href, el.src, el.value) selalunya merupakan cara paling langsung dan berprestasi tinggi untuk menetapkan nilai. Atribut (setAttribute) paling sesuai untuk atribut tersuai atau ARIA yang tidak mempunyai sifat DOM sepadan.
// Property (preferred for standard HTML attributes):
img.src = '/photo.webp';
link.href = '/about';
// setAttribute (for ARIA and custom attributes):
button.setAttribute('aria-expanded', 'true');
div.setAttribute('data-index', '3');Mengelakkan innerHTML dengan Kandungan Pengguna
Semasa membina elemen daripada data yang diberikan pengguna, sentiasa gunakan kaedah DOM (createElement, textContent, setAttribute) dan bukannya membina rentetan HTML lalu menggunakan innerHTML. Jangan sesekali memasukkan masukan pengguna ke dalam rentetan HTML.
// DANGEROUS:
container.innerHTML = `<p>${userComment}</p>`;
// SAFE:
const p = document.createElement('p');
p.textContent = userComment;
container.append(p);Semakan Pantas
Anda perlu menambah 100 item senarai ke dalam <ul> tanpa menyebabkan 100 penyusunan semula. Pendekatan manakah yang terbaik?
Imbas Kembali: Mencipta Elemen DOM
createElement mencipta dalam memori. append/prepend/before/after menyisipkan ke dalam pepohon. remove() memadamkan elemen. DocumentFragment mengumpulkan sisipan demi prestasi. Elemen menyimpan penanda yang boleh digunakan semula. Sentiasa gunakan textContent dengan data pengguna, jangan sekali-kali innerHTML.
Pelajari HTML dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 41
- Pelajaran
- 163
Soalan Lazim
Adakah pelajaran “Mencipta dan Menambahkan Elemen” percuma?
Ya — teks penuh “Mencipta dan Menambahkan Elemen” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Frontend Academy, tingkat taraf kepada CoddyKit PRO. Kursus Frontend Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mencipta dan Menambahkan Elemen”?
Gunakan createElement, setAttribute, append dan remove untuk membina serta mengubah suai struktur DOM secara dinamik. Anda berlatih Frontend Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Frontend Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Frontend Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Mencipta dan Menambahkan Elemen” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Frontend Academy ini?
Ya. Setiap pelajaran Frontend Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- querySelector dan querySelectorAll
- addEventListener dan Objek Peristiwa
- Menukar Kandungan: textContent innerHTML classList
- Mencipta dan Menambahkan Elemen