Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk mencipta fungsi `generateSelector` untuk menjana laluan pemilih CSS untuk elemen DOM?

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

王林
王林ke hadapan
2023-09-20 18:17:111493semak imbas

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 e388a4556c0f65e1904146cc1a846bee 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>

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>

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 = [];
}

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';
   }
}

Apabila kami mengulangi setiap nenek moyang, kami akan menjana pemilih untuknya. Kami mula-mula menyemak sama ada elemen itu ialah 100db36a723c770d327fc0aef2ce13b1 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, '.');
      }
   }
}

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;
}

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(' > ');{
}

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>

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Beberapa peraturan CSSArtikel seterusnya:Beberapa peraturan CSS