Bagaimana untuk mencipta fungsi `generateSelector` untuk menjana laluan pemilih CSS untuk elemen DOM?

王林
Lepaskan: 2023-09-20 18:17:11
ke hadapan
1495 orang telah melayarinya

Kaedah

如何创建一个函数 `generateSelector` 来生成 DOM 元素的 CSS 选择器路径?

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.

Ketahui tentang pemilih CSS

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.

Contoh

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>
Salin selepas log masuk

Contoh

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>
Salin selepas log masuk

Peraturan CSS ini memilih elemen dengan ID "pengepala utama" dan menggunakan gaya "warna latar: biru" padanya.

Buat fungsi generateSelector

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.

Tatabahasa

function generateSelector(element) {
   let selectors = [];
}
Salin selepas log masuk

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.

Tatabahasa

while (element) {
   let selector = '';
   if (element.tagName === 'HTML') {
      selector = 'html';
   }
}
Salin selepas log masuk

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.

Tatabahasa

else {
   if (element.id) {
      selector = '#' + element.id;
   } else {
      selector = element.tagName.toLowerCase();
      if (element.className) {
         selector += '.' + element.className.replace(/\s+/g, '.');
      }
   }
}
Salin selepas log masuk

Selepas menjana pemilih, kami menambahkannya pada tatasusunan pemilih dan beralih ke nenek moyang seterusnya dengan menetapkan elemen sama dengan element.parentNode.

Tatabahasa

selectors.unshift(selector);{
   element = element.parentNode;
}
Salin selepas log masuk

Akhir sekali, kami akan menggunakan kaedah join() untuk menyertai semua pemilih dalam tatasusunan pemilih dan mengembalikan laluan pemilih CSS yang terhasil sebagai rentetan.

Tatabahasa

return selectors.join(' > ');{
}
Salin selepas log masuk

Gunakan fungsi generateSelector

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>
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan