$lang['tuto'] = "tutorial"; ?>$lang['tuto'] = "tutorial"; ?> Gunakan JavaScript untuk Isih Item mengikut Beberapa

Gunakan JavaScript untuk Isih Item mengikut Beberapa Kategori untuk Tapak Web Dinamik

Gunakan JavaScript untuk Isih Item mengikut Beberapa Kategori untuk Tapak Web Dinamik
Gunakan JavaScript untuk Isih Item mengikut Beberapa Kategori untuk Tapak Web Dinamik

Meningkatkan Penapisan Produk dengan JavaScript dan Berbilang Kategori

Mencipta halaman web yang dinamik dan mesra pengguna melibatkan penawaran navigasi yang lancar dan penapisan kandungan yang mudah. Ini amat berguna apabila memaparkan produk atau item yang termasuk dalam berbilang kategori. Menggunakan JavaScript, kami boleh melaksanakan cara intuitif untuk menapis item berdasarkan berbilang kategori, menjadikannya lebih mudah untuk pengguna mencari dengan tepat apa yang mereka cari.

Dalam senario ini, mengklik butang kategori harus menapis item yang dipaparkan pada halaman. Pengguna seharusnya boleh memilih berbilang kategori secara serentak, membolehkan paparan produk yang lebih disesuaikan. Sebagai contoh, memilih "Salmon" dan "Udang" seharusnya hanya menunjukkan item yang mengandungi kedua-dua ramuan.

Pada masa ini, banyak pelaksanaan berfungsi dengan baik untuk penapisan kategori tunggal, tetapi menambah berbilang kategori boleh menjadi rumit. Cabarannya terletak pada memastikan semua kategori yang dipilih dipertimbangkan semasa memutuskan item yang hendak ditunjukkan atau disembunyikan. Artikel ini meneroka cara melanjutkan penapisan kategori tunggal kepada penapisan berbilang kategori dengan cara yang cekap menggunakan JavaScript.

Dalam panduan ini, kami akan menelusuri penyelesaian yang menapis kad secara dinamik berdasarkan berbilang butang aktif, memberikan pengalaman yang mudah dan mesra pengguna. Dengan melaksanakan penyelesaian JavaScript ini, anda akan belajar cara meningkatkan interaktiviti halaman web anda dan meningkatkan penglibatan pengguna.

Perintah Contoh Penggunaan
every() The every() method is used to check if all selected categories match the categories of each card. This is crucial in ensuring that multiple category filters work correctly. For example, activeCategories.every(cat =>Kaedah every() digunakan untuk menyemak sama ada semua kategori yang dipilih sepadan dengan kategori setiap kad. Ini penting dalam memastikan penapis berbilang kategori berfungsi dengan betul. Contohnya, activeCategories.every(cat => cardCategories.includes(cat)) memastikan bahawa semua kategori yang dipilih terkandung dalam kategori kad.
toggle() Perintah ini menghidupkan atau mematikan kelas. Ia digunakan untuk menambah atau mengalih keluar kelas butang aktif secara dinamik daripada butang kategori apabila diklik. Ini membantu menjejaki sama ada butang aktif, memberi kesan kepada kad yang ditunjukkan atau disembunyikan.
filter() The filter() method creates a new array with all elements that pass a test. In the Node.js example, products.filter(product => selectedCategories.every(cat =>Kaedah penapis() mencipta tatasusunan baharu dengan semua elemen yang lulus ujian. Dalam contoh Node.js, products.filter(product => selectedCategories.every(cat => product.categories.includes(cat))) menapis produk berdasarkan kategori yang dipilih oleh pengguna.
split() Kaedah split() digunakan untuk menukar rentetan kategori kepada tatasusunan. Sebagai contoh, card.getAttribute("data-category").split(",") membahagikan rentetan kategori yang dipisahkan koma kepada tatasusunan untuk perbandingan yang lebih mudah dengan kategori aktif.
classList.add() Kaedah ini menambah kelas tertentu kepada elemen. Ia digunakan untuk menambah kelas kad tidak aktif untuk menyembunyikan kad yang tidak sepadan dengan penapis aktif. Contohnya, card.classList.add("inactive-card") menyembunyikan kad apabila kategorinya tidak sepadan dengan yang dipilih.
trim() Kaedah trim() digunakan untuk mengalih keluar ruang putih daripada kedua-dua hujung rentetan. Dalam skrip, ia memastikan bahawa kategori daripada butang dibandingkan dengan kategori daripada data produk. Sebagai contoh, button.innerText.trim() memastikan tiada ruang tambahan dipertimbangkan.
post() Dalam skrip backend, post() digunakan untuk mencipta laluan yang menerima data yang dihantar oleh klien (dalam kes ini, kategori yang dipilih). Skrip sebelah pelayan memproses permintaan ini untuk mengembalikan data produk yang ditapis berdasarkan kategori yang dipilih.
json() Kaedah dalam Express ini digunakan untuk menghantar semula respons JSON kepada klien. Contohnya, res.json(filteredProducts) mengembalikan produk yang sepadan dengan kategori yang dipilih, membenarkan pihak pelanggan memaparkan produk yang ditapis.

Memahami Penapisan Berbilang Kategori dalam JavaScript

Skrip yang disediakan di atas memfokuskan pada menapis item secara dinamik berdasarkan berbilang kategori, yang penting untuk meningkatkan pengalaman pengguna di tapak web berasaskan produk. Matlamatnya adalah untuk membolehkan pengguna memilih berbilang kategori dan kad penapis dengan sewajarnya. Ini dicapai menggunakan JavaScript dengan menangkap klik butang, menyimpan kategori yang dipilih dalam tatasusunan, dan kemudian memaparkan hanya kad yang sepadan dengan semua kategori yang dipilih. Proses ini dimulakan apabila pengguna mengklik pada butang kategori, yang menogol keadaan aktif butang itu. Nilai butang disimpan dalam tatasusunan, yang mewakili semua penapis aktif.

Bahagian kritikal penyelesaian ini menggunakan kaedah tatasusunan setiap(). Perintah ini memastikan bahawa semua kategori yang dipilih dibandingkan dengan kategori kad. Ia menyemak sama ada setiap kategori aktif ditemui dalam kategori kad, sekali gus membolehkan penapisan berbilang kategori berfungsi dengan lancar. Kaedah penting lain ialah split(), yang digunakan untuk memecahkan rentetan kategori daripada setiap kad kepada tatasusunan. Ini membolehkan JavaScript membandingkan kategori individu dan menentukan kad yang perlu dipaparkan atau disembunyikan.

Di samping itu, skrip menggunakan classList.toggle() untuk menambah atau mengalih keluar kelas aktif pada butang apabila diklik. Kelas ini penting untuk maklum balas visual, kerana ia menunjukkan butang yang sedang aktif. Apabila butang dinyahaktifkan, kategorinya dialih keluar daripada tatasusunan kategori aktif dan fungsi penapisan dicetuskan sekali lagi untuk mengemas kini paparan. Kad yang tidak sepadan dengan kategori aktif disembunyikan dengan menambahkan kelas untuk menandakannya sebagai tidak aktif. Kaedah ini memastikan pengguna boleh memperhalusi carian mereka dengan mudah dengan memilih atau menyahpilih berbilang penapis.

Skrip bahagian belakang distrukturkan untuk mengendalikan penapisan produk pada bahagian pelayan menggunakan Node.js dan Express. Kategori yang dipilih dihantar ke pelayan melalui permintaan POST dan pelayan memproses permintaan ini dengan menapis produk dan hanya mengembalikan item yang sepadan dengan kategori aktif. Pelayan menggunakan logik yang sama seperti bahagian hadapan, menggunakan penapis() kaedah untuk membandingkan kategori yang dipilih dengan kategori setiap produk. Pendekatan ini berguna apabila berurusan dengan set data yang besar, kerana ia memuatkan pemprosesan dari sisi pelanggan, menghasilkan prestasi yang lebih baik untuk pengguna akhir.

Penapisan Item Dinamik Menggunakan JavaScript: Penapisan Berbilang Kategori Dioptimumkan

Pendekatan pembangunan bahagian hadapan menggunakan JavaScript Vanila

// Define product data
let products = {
  data: [
    { productName: "Fantasy", category: "Salmon, Shrimp" },
    { productName: "Spring", category: "Veggie" },
    { productName: "Rainbow", category: "Salmon, Tuna, Unagi" },
    { productName: "Unique", category: "Salmon, Tuna, Unagi, Shrimp" },
    { productName: "Perfection", category: "Salmon" },
  ]
};

// Handle button click event
let activeCategories = [];
document.querySelectorAll(".category-button").forEach(button => {
  button.addEventListener("click", () => {
    const category = button.innerText.trim();
    button.classList.toggle("active-button");
    if (button.classList.contains("active-button")) {
      activeCategories.push(category);
    } else {
      activeCategories = activeCategories.filter(cat => cat !== category);
    }
    filterCards();
  });
});

// Filter cards based on active categories
function filterCards() {
  document.querySelectorAll(".card").forEach(card => {
    const cardCategories = card.getAttribute("data-category").split(",");
    const match = activeCategories.every(cat => cardCategories.includes(cat));
    card.style.display = match ? "block" : "none";
  });
}

Pelaksanaan Bahagian Belakang untuk Penapisan Item Dinamik

Pendekatan sisi pelayan menggunakan Node.js dan Express

const express = require('express');
const app = express();
app.use(express.json());

// Sample product data
const products = [
  { name: 'Fantasy', categories: ['Salmon', 'Shrimp'] },
  { name: 'Spring', categories: ['Veggie'] },
];

// Filter products API
app.post('/filter', (req, res) => {
  const selectedCategories = req.body.categories;
  const filteredProducts = products.filter(product =>
    selectedCategories.every(cat => product.categories.includes(cat))
  );
  res.json(filteredProducts);
});

app.listen(3000, () => console.log('Server running on port 3000'));

Teknik Lanjutan untuk Penapisan Berbilang Kategori dalam Pembangunan Web

Apabila melaksanakan sistem penapisan berbilang kategori dalam JavaScript, adalah penting untuk mempertimbangkan bukan sahaja interaksi UI, tetapi juga struktur data yang menyokongnya. Dalam konteks kandungan dinamik, mengekalkan kandungan yang optimum dan bersih DOM strategi manipulasi adalah kunci. Sebagai contoh, anda boleh menggunakan teknik perwakilan acara untuk mengendalikan butang berbilang kategori dengan cekap, memastikan bahawa hanya elemen DOM yang diperlukan dimanipulasi.

Satu aspek yang boleh meningkatkan lagi pengalaman penapisan ialah menambahkan elemen UI yang lebih canggih, seperti kotak pilihan atau menu lungsur berbilang pilihan, bukannya butang mudah. Ini membolehkan pengguna berinteraksi dengan penapis dengan cara yang lebih terperinci. Contohnya, lungsur turun yang membenarkan berbilang pilihan menyediakan UI yang lebih bersih dan lebih fleksibiliti untuk pengguna apabila memilih kategori. Ini boleh dilaksanakan dengan logik dan penggayaan JavaScript tambahan, sambil masih menggunakan kaedah tatasusunan seperti filter() dan every() untuk perbandingan kategori.

Satu lagi pertimbangan kritikal ialah prestasi sistem penapisan, terutamanya apabila berurusan dengan set data yang besar. Apabila anda mempunyai ratusan atau ribuan item untuk ditapis, adalah penting untuk meminimumkan manipulasi DOM sebanyak mungkin. Salah satu cara untuk mengoptimumkan ini adalah untuk membatch kemas kini kepada DOM, menggunakan requestAnimationFrame() atau debounce() kaedah untuk mengawal kadar kemas kini dan memastikan pengalaman pengguna yang lancar. Teknik ini bukan sahaja meningkatkan prestasi tetapi juga meningkatkan responsif halaman, menjadikannya lebih berskala untuk set data yang lebih besar.

Soalan Lazim Mengenai Penapisan Berbilang Kategori dalam JavaScript

  1. Bagaimanakah saya mengendalikan berbilang penapis aktif?
  2. Anda boleh menyimpan penapis aktif dalam tatasusunan dan gunakan every() untuk menyemak sama ada kategori setiap kad sepadan dengan penapis yang dipilih.
  3. Apakah yang berlaku jika saya mempunyai kategori yang bertindih?
  4. menggunakan split() dan trim(), anda boleh mengasingkan dan membersihkan data kategori, memastikan setiap kategori betul dibandingkan dengan penapis aktif.
  5. Bagaimanakah saya boleh mengoptimumkan penapisan untuk set data yang besar?
  6. Kemas kini DOM kelompok menggunakan requestAnimationFrame() atau melaksanakan a debounce() berfungsi untuk mengurangkan kekerapan operasi penapisan, meningkatkan prestasi.
  7. Bagaimanakah saya boleh memaparkan item yang sepadan dengan semua kategori yang dipilih?
  8. guna every() untuk memastikan bahawa semua kategori yang dipilih disertakan dalam setiap data kad sebelum menjadikannya kelihatan.
  9. Apakah cara terbaik untuk mengendalikan imej yang rosak dalam sistem kad?
  10. Melaksanakan an error pendengar acara pada setiap imej untuk menyembunyikan atau menggantikan imej apabila ia gagal dimuatkan, meningkatkan pengalaman pengguna.

Pemikiran Akhir tentang Teknik Penapisan JavaScript

Melaksanakan penapisan berbilang kategori dalam halaman web boleh meningkatkan pengalaman pengguna dengan ketara, menjadikannya lebih mudah untuk pengguna mencari apa yang mereka perlukan. Dengan penggunaan yang teliti JavaScript kaedah seperti togol() dan setiap(), pembangun boleh mencipta penyelesaian yang cekap dan berskala yang mengendalikan set data yang besar dengan lancar.

Selain itu, dengan mengoptimumkan manipulasi DOM dan mengurangkan operasi yang tidak perlu, pendekatan ini memastikan prestasi walaupun dengan interaksi pengguna yang tinggi. Sistem penapisan ini boleh disepadukan ke dalam tapak web e-dagang, portfolio atau mana-mana halaman yang memerlukan paparan kandungan dinamik berdasarkan berbilang penapis.

Bahagian Sumber dan Rujukan
  1. Contoh kandungan dan kod dalam artikel ini diilhamkan oleh contoh CodePen oleh Alena Chuyankova. Anda boleh meneroka kod asal di sini: KodPen Alena .
  2. Konsep tambahan mengenai kaedah tatasusunan JavaScript dan pengendalian acara telah dirujuk daripada dokumentasi Rangkaian Pembangun Mozilla rasmi, boleh diakses di sini: Dokumen Web MDN .
  3. Untuk mendapatkan maklumat lanjut tentang mengoptimumkan manipulasi dan prestasi DOM menggunakan JavaScript, saya merujuk kepada panduan komprehensif ini daripada Smashing Magazine: Memahami DOM Cekap .