پروژه فروشگاه اینترنتی با جاوااسکریپت - بخش دوم
🎯 اهداف این بخش
- پیاده سازی سبد خرید در حافظه مرورگر
- افزودن محصولات به سبد خرید
- نمایش تعداد محصولات در آیکون سبد خرید
- ذخیره و بازیابی اطلاعات سبد خرید
- حذف محصولات از سبد خرید
📌 ساختار پروژه
در این بخش به پیاده سازی سبد خرید میپردازیم. ابتدا ساختار پروژه را بررسی میکنیم:
bash
project/├── index.html├── css/│ └── style.css├── js/│ ├── main.js│ └── cart.js└── images/
📌 پیاده سازی سبد خرید
برای مدیریت سبد خرید از localStorage مرورگر استفاده میکنیم:
javascript
class Cart { constructor() { this.cartItems = this.getCartFromStorage(); this.updateCartIcon(); } addToCart(product) { // بررسی وجود محصول در سبد خرید const existingItem = this.cartItems.find(item => item.id === product.id); if (existingItem) { existingItem.quantity += product.quantity || 1; } else { product.quantity = product.quantity || 1; this.cartItems.push(product); } this.saveCartToStorage(); this.updateCartIcon(); }
توضیحات کد:
- constructor: در هنگام ایجاد نمونه از کلاس، سبد خرید از localStorage خوانده میشود
- addToCart: محصول جدید به سبد اضافه میشود یا تعداد محصول موجود افزایش مییابد
- localStorage: برای ذخیره سبد خرید بین صفحات و حتی بعد از بستن مرورگر
📌 ذخیره و بازیابی سبد خرید
توابع مربوط به ذخیره و بازیابی سبد خرید از localStorage:
javascript
getCartFromStorage() { const cartJson = localStorage.getItem('cart'); return cartJson ? JSON.parse(cartJson) : [];}saveCartToStorage() { localStorage.setItem('cart', JSON.stringify(this.cartItems));}clearCart() { this.cartItems = []; this.saveCartToStorage(); this.updateCartIcon();}
📌 نمایش تعداد محصولات در آیکون سبد خرید
برای نمایش تعداد محصولات در آیکون سبد خرید از تابع زیر استفاده میکنیم:
javascript
updateCartIcon() { const cartIcon = document.querySelector('.cart-icon'); const totalItems = this.cartItems.reduce((total, item) => total + item.quantity, 0); if (totalItems > 0) { cartIcon.innerHTML = `<span class="cart-count">${totalItems}</span>`; } else { cartIcon.innerHTML = ''; }}
📌 حذف محصول از سبد خرید
برای حذف یک محصول از سبد خرید:
javascript
removeFromCart(productId) { this.cartItems = this.cartItems.filter(item => item.id !== productId); this.saveCartToStorage(); this.updateCartIcon();}
📌 استفاده از کلاس Cart در پروژه
برای استفاده از کلاس Cart در پروژه:
javascript
// ایجاد نمونه از کلاس Cartconst cart = new Cart();// افزودن رویداد کلیک به دکمههای "افزودن به سبد خرید"document.querySelectorAll('.add-to-cart').forEach(button => { button.addEventListener('click', () => { const productId = parseInt(button.dataset.productId); const product = { id: productId, name: button.dataset.productName, price: parseFloat(button.dataset.productPrice) }; cart.addToCart(product); alert('محصول به سبد خرید اضافه شد'); });});
📌 تمرین عملی
کلاس Cart را تکمیل کنید تا امکان تغییر تعداد محصولات در سبد خرید را نیز فراهم کند:
javascript
// تابعی برای بهروزرسانی تعداد یک محصول در سبد خریدupdateQuantity(productId, newQuantity) { // کد خود را اینجا بنویسید}
راهنمای تمرین:
- محصول مورد نظر را در آرایه cartItems پیدا کنید
- تعداد جدید را به آن اختصاص دهید
- سبد خرید را در localStorage ذخیره کنید
- آیکون سبد خرید را بهروز کنید
📌 قدم بعدی
در بخش سوم با نمایش سبد خرید و محاسبه جمع کل آشنا خواهیم شد!