15 Kaedah JavaScript Untuk Manipulasi DOM untuk Pembangun Web
Sebagai pemaju web, anda sering perlu memanipulasi DOM, model objek yang digunakan oleh penyemak imbas tentukan struktur logik halaman web, dan berdasarkan struktur ini kepada membuat elemen HTML pada skrin.
HTML mentakrifkan struktur DOM lalai. Walau bagaimanapun dalam banyak kes anda mungkin mahu memanipulasi ini dengan JavaScript, biasanya untuk menambah fungsi tambahan ke laman web.
Dalam siaran ini, anda akan dapati senarai 15 kaedah JavaScript asas itu manipulasi DOM bantuan. Anda mungkin menggunakan kaedah ini dengan kerap dalam kod anda, dan anda juga akan bertemu dengan mereka dalam tutorial JavaScript kami.
1. querySelector ()
The querySelector ()
kaedah mengembalikan elemen pertama yang sepadan dengan satu atau lebih pemilih CSS. Sekiranya tiada perlawanan dijumpai, ia akan kembali null
.
Sebelum ini querySelector ()
diperkenalkan, pemaju meluas menggunakan getElementById ()
kaedah yang mengambil elemen dengan spesifikasi ID
nilai.
Walaupun getElementById ()
masih merupakan kaedah yang berguna, tetapi dengan yang lebih baru querySelector ()
dan querySelectorAll ()
kaedah kita bebas elemen sasaran berdasarkan mana-mana pemilih CSS, oleh itu kami mempunyai lebih banyak fleksibiliti.
Sintaks
var ele = document.querySelector (selector);
ele
- Elemen sepadan pertama ataunull
(jika tiada unsur sepadan dengan pemilih)pemilih
- satu atau lebih pemilih CSS, seperti"#fooId"
,".fooClassName"
,".class1.class2"
, atau".class1, .class2"
Contoh Kod
Dalam contoh ini, yang pertama perenggan satu perenggan dua perenggan tiga Uji Tidak seperti Unsur yang sepadan dikembalikan sebagai a Contoh di bawah menggunakan HTML yang sama seperti sebelumnya. Walau bagaimanapun, dalam contoh ini, semua perenggan dipilih dengan perenggan satu perenggan dua perenggan tiga Peristiwa rujuk kepada apa yang berlaku kepada elemen HTML, seperti mengklik, memfokus, atau memuatkan, yang mana kita boleh bertindak balas dengan JavaScript. Kita boleh menetapkan fungsi JS ke mendengar untuk peristiwa-peristiwa ini dalam unsur-unsur dan melakukan sesuatu apabila peristiwa itu berlaku. Terdapat tiga cara yang anda boleh memberikan fungsi kepada acara tertentu. Jika Cara Menghentikan peristiwa menggelegak, iaitu menghalang memanggil mana-mana pendengar acara untuk jenis peristiwa yang sama dalam nenek moyang elemen. Untuk menggunakan ciri ini, anda boleh menggunakan 2 sintaks: Pendengar hanya dipanggil kali pertama peristiwa berlaku, maka ia secara automatik terpisah daripada peristiwa, dan tidak akan dicetuskan olehnya lagi. Tindakan lalai acara tidak dapat dihentikan dengan metode preventDefault (). Dalam contoh ini, kami menambah pendengar acara klik dipanggil Berikan The Menggunakan sintaks yang sama seperti yang disebutkan di atas Mengikuti Contoh Kod yang kami gunakan di The Anda kemudian boleh menambah elemen ini ke halaman web dengan menggunakan yang berbeza kaedah untuk memasukkan DOM, seperti Dengan contoh berikut, anda boleh mencipta elemen perenggan baru: The Kanak-kanak yang boleh dimasukkan boleh sama ada a elemen yang baru diwujudkan, atau a sudah sedia ada. Dalam kes yang kedua, ia akan dipindahkan dari kedudukan terdahulu kepada kedudukan anak terakhir. Dalam contoh ini, kita masukkan a Dalam demo interaktif berikut, surat daripada Semak bagaimana The Dalam contoh ini, kami mengalih keluar The Dalam contoh ini, elemen kanak-kanak Apabila anda perlu membuat elemen baru yang perlu menjadi sama seperti unsur yang sudah ada di laman web, anda boleh semata-mata buat salinan elemen sedia ada menggunakan Dalam contoh ini, kami membuat salinan untuk Akibatnya, The Jika elemen kanak-kanak yang dirujuk tidak wujud atau anda lulus dengan jelas Dalam contoh ini, kita buat yang baru Demo interaktif ini berfungsi sama seperti demo sebelumnya yang dimiliki oleh The Ia mencipta a Mengapa kita tidak hanya menambah elemen terus ke pokok DOM? Kerana penyisipan DOM menyebabkan perubahan susun atur, dan ia adalah satu proses penyambungan mahal kerana banyak memasukkan elemen akibat akan menyebabkan lebih banyak perubahan susun atur. Sebaliknya, menambah elemen kepada a Dalam contoh ini, kami membuat beberapa baris dan sel berbilang jadual dengan Akibatnya, lima baris - masing-masing mengandungi satu sel dengan nombor 1 hingga 5 sebagai kandungan - akan dimasukkan ke dalam jadual. Kadang-kadang anda mahu semak nilai harta CSS daripada elemen sebelum membuat sebarang perubahan. Anda boleh menggunakannya Dalam contoh ini, kami mendapat dan memberi amaran kepada pengiraan The Dalam contoh ini, kami menambah The Dalam contoh ini, kami memberi amaran kepada nilai The Dalam contoh ini, kami mengalih keluar querySelector ()
kaedah dan warnanya berubah menjadi merah.
var firstDiv = document.querySelector ('div'); firstDiv.style.color = 'red';
Demo Interaktif
querySelector ()
kaedah dalam demo interaktif berikut. Catat pemilih yang sepadan dengan yang anda dapati di dalam kotak biru (mis. #three
), dan klik butang Pilih. Perhatikan bahawa jika anda menaip .blok
, hanya contoh pertama akan dipilih.2.
querySelectorAll ()
querySelector ()
yang mengembalikan hanya contoh pertama semua elemen yang sepadan, querySelectorAll ()
mengembalikan semua elemen yang sepadan dengan pemilih CSS yang ditentukan.NodeList
objek yang akan menjadi objek kosong jika tiada elemen padanan yang dijumpai.Sintaks
var eles = document.querySelectorAll (selector);
eles
- A NodeList
objek dengan semua elemen yang sesuai sebagai nilai harta. Objek kosong jika tiada padanan ditemui.pemilih
- satu atau lebih pemilih CSS, seperti "#fooId"
, ".fooClassName"
, ".class1.class2"
, atau ".class1, .class2"
Contoh Kod
querySelectorAll ()
, dan berwarna biru.
var paragraf = document.querySelectorAll ('p'); untuk (var p perenggan) p.style.color = 'blue';
3.
addEventListener ()
foo ()
adalah fungsi tersuai, anda boleh mendaftarkannya sebagai pendengar acara klik (memanggilnya apabila elemen butang diklik) dalam tiga cara:
var btn = document.querySelector ('button'); btn.onclick = foo;
var btn = document.querySelector ('button'); btn.addEventListener ('klik', foo);
addEventListener ()
(penyelesaian ketiga) ada beberapa kebaikan; ia adalah piawai terkini - yang membolehkan tugasan lebih daripada satu fungsi sebagai pendengar acara kepada satu acara - dan dilengkapi dengan set pilihan yang berguna.Sintaks
ele.addEventListener (evt, pendengar, [pilihan]);
ele
- Elemen HTML pendengar acara akan didengar.evt
- Acara yang disasarkan.pendengar
- Biasanya, fungsi JavaScript.pilihan
- (pilihan) Objek dengan satu set sifat boolean (disenaraikan di bawah).Pilihan Apa yang berlaku, apabila ia ditetapkan benar
?tangkap
ele.addEventListener (evt, pendengar, benar)
ele.addEventListener (evt, pendengar, capture: true);
sekali
pasif
Contoh Kod
foo
, kepada Tag HTML.
var btn = document.querySelector ('button'); btn.addEventListener ('klik', foo); fungsi foo () alert ('hello');
Demo Interaktif
foo ()
fungsi tersuai sebagai pendengar peristiwa kepada mana-mana tiga peristiwa berikut: input
, klik
atau tetikus
& mencetuskan peristiwa yang dipilih dalam medan input bawah dengan melayang, mengklik atau menaip di dalamnya.4.
removeEventListener ()
removeEventListener ()
kaedah membongkar pendengar acara sebelum ini ditambah dengan addEventListener ()
kaedah dari acara yang sedang didengarkan.Sintaks
ele.removeEventListener (evt, pendengar, [opsyen]);
addEventListener ()
kaedah (kecuali untuk sekali
pilihan yang dikecualikan). Pilihannya digunakan untuk menjadi sangat spesifik tentang mengenal pasti pendengar yang terpencil.Contoh Kod
addEventListener ()
, di sini kami mengalih keluar pendengar acara klik dipanggil foo
daripada elemen.
btn.removeEventListener ('klik', foo);
5.
createElement ()
createElement ()
kaedah mewujudkan elemen HTML baru menggunakan nama tag HTML untuk dicipta, seperti 'p'
atau 'div'
.AppendChild ()
(lihat kemudian dalam catatan ini).Sintaks
document.createElement (tagName);
tagName
- Nama tag HTML yang anda ingin buat. Contoh Kod
var pEle = document.createElement ('p')
6.
appendChild ()
appendChild ()
kaedah menambah unsur sebagai anak terakhir kepada elemen HTML yang menggunakan kaedah ini.Sintaks
ele.appendChild (childEle)
ele
- Unsur HTML yang mana anakEle
ditambah sebagai anak terakhirnya.anakEle
- Elemen HTML ditambah sebagai anak terakhir dari ele
.Contoh Kod
elemen adalah sebagai anak a
appendChild ()
dan yang disebutkan di atas createElement ()
kaedah.
var div = document.querySelector ('div'); var strong = document.createElement ('kuat'); strong.textContent = 'Hello'; div.appendChild (kuat);
Demo Interaktif
#a
kepada #r
adalah unsur kanak-kanak # orang induk
, # ibu bapa-dua
, dan # ibu bapa-tiga
pemilih id.appendChild ()
kaedah berfungsi oleh menaip satu ibu bapa dan satu nama pemilih anak ke dalam medan input di bawah. Anda boleh memilih kanak-kanak yang dipunyai oleh ibu bapa yang lain juga.7.
removeChild ()
removeChild ()
kaedah membuang elemen kanak-kanak tertentu dari elemen HTML yang memanggil kaedah ini.Sintaks
ele.removeChild (childEle)
ele
- Unsur induk dari anakEle
.anakEle
- Elemen kanak-kanak ele
.Contoh Kod
elemen yang kami tambah sebagai kanak-kanak kepada
appendChild ()
kaedah. div.removeChild (kuat);
8.
menggantikanChild ()
menggantikanChild ()
kaedah menggantikan elemen kanak-kanak dengan yang lain kepunyaan unsur induk yang memanggil kaedah ini.Sintaks
ele.replaceChild (newChildEle, oldChileEle)
ele
- Unsur induk yang anak-anak akan diganti.newChildEle
- Elemen kanak-kanak ele
yang akan menggantikannya oldChildEle
.oldChildEle
- Elemen kanak-kanak ele
, yang akan digantikan oleh newChildEle
.Contoh Kod
kepunyaan
tag.
var em = document.createElement ('em'); var strong = document.querySelector ('kuat'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.replaceChild (em, kuat);
9.
cloneNode ()
cloneNode ()
kaedah.Sintaks
var dupeEle = ele.cloneNode ([mendalam])
dupeEle
- Salinan ele
elemen.ele
- Elemen HTML untuk disalin.mendalam
- (pilihan) Nilai boolean. Sekiranya ia ditetapkan benar
, dupeEle
akan mempunyai semua unsur kanak-kanak ele
telah, jika ia ditetapkan salah
ia akan diklonkan tanpa anak-anaknya.Contoh Kod
elemen dengan
cloneNode ()
, maka kami tambahkannya kepada appendChild ()
kaedah. elemen, kedua-duanya dengan
hello
rentetan sebagai kandungan.
var strong = document.querySelector ('kuat'); var copy = strong.cloneNode (true); var div = document.querySelector ('div'); div.appendChild (salinan);
10.
masukkan sebelum ()
masukkan sebelum ()
kaedah menambah elemen kanak-kanak yang dinyatakan sebelum elemen anak lain. Kaedah ini dipanggil oleh elemen induk.null
di tempatnya, elemen kanak-kanak yang dimasukkan dimasukkan sebagai anak buaian terakhir (sama seperti appendChild ()
).Sintaks
ele.insertBefore (newEle, refEle);
ele
- Elemen induk.newEle
- Elemen HTML baru akan dimasukkan.refEle
- Elemen kanak-kanak ele
sebelum itu newEle
akan dimasukkan.Contoh Kod
elemen dengan beberapa teks di dalam, dan tambahnya sebelum ini yang
elemen di dalam
var em = document.createElement ('em'); var strong = document.querySelector ('kuat'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.insertBefore (em, kuat);
Demo Interaktif
appendChild ()
kaedah. Di sini anda hanya perlu menaip pemilih id dua elemen kanak-kanak (dari #a
kepada #r
) ke dalam kotak input, dan anda boleh melihat bagaimana masukkan sebelum ()
kaedah bergerak anak pertama yang ditentukan sebelum ini yang kedua.11.
createDocumentFragment ()
createDocumentFragment ()
Kaedah mungkin tidak begitu dikenali sebagai yang lain dalam senarai ini, namun adalah penting, terutama jika anda mahu masukkan pelbagai unsur secara pukal, seperti menambah berbilang baris ke meja.DocumentFragment
objek, yang pada dasarnya adalah nod DOM yang bukan sebahagian daripada pokok DOM. Ia seperti penampan di mana kita boleh menambah dan menyimpan elemen lain (cth. Berbilang baris) terlebih dahulu, sebelum menambahkannya ke nod yang dikehendaki di dalam pokok DOM (cth. Ke meja).DocumentFragment
objek tidak menyebabkan perubahan susun atur, jadi anda boleh menambah seberapa banyak unsur yang anda mahu sebelum menghantarnya ke pokok DOM, menyebabkan perubahan susun atur hanya pada ketika ini.Sintaks
document.createDocumentFragment ()
Contoh Kod
createElement ()
kaedah, kemudian tambahkannya kepada a DocumentFragment
objek, akhirnya menambah fragmen dokumen ke HTML menggunakan
appendChild ()
kaedah.
var table = document.querySelector ("table"); var df = document.createDocumentFragment (); untuk (var i = 0; i<5; i++) var td = document.createElement("td"); var tr = document.createElement("tr"); td.textContent = i; tr.appendChild(td) df.appendChild(tr); table.appendChild(df);
12.
getComputedStyle ()
ele.style
harta untuk melakukan perkara yang sama, walau bagaimanapun getComputedStyle ()
kaedah telah dibuat hanya untuk tujuan ini, ia mengembalikan nilai dikitar semula sahaja dari semua sifat CSS elemen HTML yang ditentukan.Sintaks
var style = getComputedStyle (ele, [pseudoEle])
gaya
- A CSSStyleDeclaration
objek dikembalikan oleh kaedah. Ia memegang semua sifat CSS dan nilai-nilai mereka ele
elemen.ele
- Unsur HTML yang mana nilai-nilai harta CSS diambil.pseudoEle
- (pilihan) Rentetan yang mewakili elemen pseudo (sebagai contoh, ': selepas'
). Jika ini disebutkan, maka sifat-sifat CSS unsur-unsur pseudo tertentu yang dikaitkan dengan ele
akan dikembalikan.Contoh Kod
lebar
nilai a getComputedStyle ()
kaedah.
var style = getComputedStyle (document.querySelector ('div')); amaran (style.width);
13.
setAttribute ()
setAttribute ()
kaedah sama ada menambah atribut baru kepada elemen HTML, atau mengemas kini nilai daripada atribut yang telah wujud.Sintaks
ele.setAttribute (nama, nilai);
ele
- Unsur HTML yang mana atribut ditambah, atau yang mana atribut dikemas kini.nama
- Nama atribut.nilai
- Nilai atribut.Contoh Kod
kandungan boleh diubah
atribut kepada a setAttribute ()
kaedah, yang akan mengubah kandungannya disunting. var div = document.querySelector ('div'); div.setAttribute ('contenteditable', ")
14.
getAttribute ()
getAttribute ()
kaedah mengembalikan nilai atribut yang ditentukan milik elemen HTML tertentu.Sintaks
ele.getAttribute (nama);
ele
- Unsur HTML yang mana atribut diminta.nama
- Nama atribut.Contoh Kod
kandungan boleh diubah
atribut kepunyaan getAttribute ()
kaedah. var div = document.querySelector ('div'); amaran (div.getAttribute ('contenteditable'))
15.
removeAttribute ()
removeAttribute ()
kaedah membuang atribut yang diberikan elemen HTML tertentu.Sintaks
ele.removeAttribute (nama);
ele
- Elemen HTML yang mana atributnya akan dialih keluar.nama
- Nama atribut.Contoh Kod
kandungan boleh diubah
atribut dari var div = document.querySelector ('div'); div.removeAttribute ('contenteditable');