Kaedah
generateSelector ialah alat yang berguna untuk menentukan laluan ke bahagian tertentu tapak web, dipanggil elemen DOM. Memahami cara pemilih CSS berfungsi dan cara membinanya boleh berguna dalam pelbagai situasi, seperti automasi ujian atau pintasan membina untuk memilih elemen dengan mudah. Dalam artikel ini kita akan membincangkan konsep fungsi ini dan memberikan contoh yang jelas tentang cara menggunakannya.
Andaikan anda ingin menukar elemen tertentu pada tapak web anda. Tetapi bagaimana anda tahu pemilih mana yang hendak digunakan? Di sinilah fungsi generateSelector kami masuk! Fungsi ini akan mendapat elemen tertentu di tapak web dan memberi kami pemilih yang boleh kami gunakan untuk mengubahnya.
Sebelum kita mendalami penciptaan fungsi generateSelector, adalah penting untuk memahami apakah pemilih CSS dan prinsip di sebalik operasinya.
Pemilih CSS ialah corak yang digunakan untuk memilih elemen HTML pada halaman yang memerlukan penggayaan. Ia adalah aspek asas helaian gaya CSS, berfungsi sebagai cara untuk menggunakan gaya pada elemen tertentu.
Peraturan CSS berikut menggunakan pemilih untuk menyasarkan semua
elemen pada halaman dan menetapkan sifat gaya warna kepada merah -
<!DOCTYPE html> <html> <head> <style> p { color: red; } </style> </head> <body> <p>This text will be red.</p> </body> </html>
P dalam peraturan CSS ialah pemilih. Pemilih CSS boleh menjadi lebih kompleks daripada nama tag elemen. Ia boleh digunakan untuk memilih elemen berdasarkan kelas, ID, nilai atribut, dsb. Contohnya -
<!DOCTYPE html> <html> <head> <style> #main-header { background-color: blue; } </style> </head> <body> <header id="main-header"> <h1>My website</h1> </header> <!-- other content here --> </body> </html>
Peraturan CSS ini memilih elemen dengan ID "pengepala utama" dan menggunakan gaya "warna latar: biru" padanya.
Setelah memperkenalkan konsep pemilih CSS (pemilih CSS ialah kaedah mengenal pasti dan meletakkan elemen tertentu dalam halaman web untuk tujuan penggayaan), kami kini boleh meneruskan untuk mencipta fungsi generateSelector. Fungsi ini akan menerima elemen DOM (Document Object Model) sebagai input dan sebagai balasannya ia akan menyediakan laluan pemilih CSS untuk elemen khusus tersebut.
function generateSelector(element) { let selectors = []; }
Pertama, kita akan memulakan tatasusunan kosong yang dipanggil "pemilih". Tatasusunan ini akan bertindak sebagai bekas untuk pemilih yang kami hasilkan untuk elemen DOM tertentu apabila melintasi dan memeriksa elemen nenek moyangnya.
while (element) { let selector = ''; if (element.tagName === 'HTML') { selector = 'html'; } }
Apabila kami mengulangi setiap nenek moyang, kami akan menjana pemilih untuknya. Kami mula-mula menyemak sama ada elemen itu ialah Jika ya, kami akan menambah rentetan "html" pada pembolehubah pemilih
Untuk semua elemen lain kami akan menyemak sama ada elemen itu mempunyai ID. Jika ya, kami akan menggunakan ID sebagai pemilih. Jika tidak, kami akan menggunakan nama tag elemen dan nama kelasnya sebagai pemilih.
else { if (element.id) { selector = '#' + element.id; } else { selector = element.tagName.toLowerCase(); if (element.className) { selector += '.' + element.className.replace(/\s+/g, '.'); } } }
Selepas menjana pemilih, kami menambahkannya pada tatasusunan pemilih dan beralih ke nenek moyang seterusnya dengan menetapkan elemen sama dengan element.parentNode.
selectors.unshift(selector);{ element = element.parentNode; }
Akhir sekali, kami akan menggunakan kaedah join() untuk menyertai semua pemilih dalam tatasusunan pemilih dan mengembalikan laluan pemilih CSS yang terhasil sebagai rentetan.
return selectors.join(' > ');{ }
Sekarang kita telah melaksanakan fungsi generateSelector, mari lihat cara menggunakannya dalam amalan.
Sebagai contoh, katakan anda mempunyai HTML berikut -
<!DOCTYPE html> <html> <body> <div id="myDiv"> <p>Hello World</p> </div> <div id="result"></div> <script> function generateSelector(element) { let selectors = []; while (element) { let selector = ''; if (element.id) { selector = '#' + element.id; } else { selector = element.tagName; } selectors.unshift(selector); element = element.parentNode; } return selectors.join(' > '); } </script> <script> window.onload = function(){ // Select the <p> element and get its CSS selector path const p = document.querySelector("p"); if(p!==null){ const selector = generateSelector(p); document.getElementById("result").innerHTML = selector; } else{ console.log("Error : Element not found"); } } </script> </body> </html>
Adalah penting untuk ambil perhatian bahawa ini hanyalah satu contoh dan pemilih akan berbeza-beza bergantung pada elemen dan struktur HTML yang anda hantar ke fungsi tersebut.
Atas ialah kandungan terperinci Bagaimana untuk mencipta fungsi `generateSelector` untuk menjana laluan pemilih CSS untuk elemen DOM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!