/
Centermant
/
web-nodejs
Обзор
Документация
Войти
/
Centermant
/
web-nodejs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
public/lab9/task3/script.js
94 строки
3 KB
Centermant
feat(lab9:final)
25 ноя 2025, 22:02
25 ноя 2025, 22:02
6322796
Код
Авторство
О чём код?
const API_PRODUCTS = '/api/lab9/products'; const formatPrice = (cents) => { if (isNaN(cents)) return 'N/A'; return (cents / 100).toLocaleString('ru-RU', { style: 'currency', currency: 'RUB', maximumFractionDigits: 2 }); }; function loadCart() { const cartData = localStorage.getItem('cart'); return cartData ? JSON.parse(cartData) : []; } // Сохранение корзины в localStorage function saveCart(cart) { localStorage.setItem('cart', JSON.stringify(cart)); } // Добавление товара в корзину function addToCart(productId) { let cart = loadCart(); const existingItem = cart.find(item => item.id === productId); if (existingItem) { existingItem.quantity = Math.min(existingItem.quantity + 1, 5); } else { cart.push({ id: productId, quantity: 1 }); } saveCart(cart); updateCartCounter(); alert('Товар добавлен в корзину!'); } // Обновление счетчика товаров в корзине function updateCartCounter() { const cart = loadCart(); const totalItems = cart.reduce((sum, item) => sum + item.quantity, 0); const cartLink = document.getElementById('cartLink'); if (cartLink) { cartLink.textContent = `Моя корзина (${totalItems})`; } } // Загрузка и отображение товаров async function loadProducts() { try { const res = await fetch(API_PRODUCTS); if (!res.ok) { const errorData = await res.json(); throw new Error(errorData.error || `HTTP error! status: ${res.status}`); } const products = await res.json(); const tableBody = document.getElementById('productsTableBody'); tableBody.innerHTML = ''; if (products.length === 0) { tableBody.innerHTML = '<tr><td colspan="5">Товары не найдены.</td></tr>'; return; } products.forEach(product => { const row = document.createElement('tr'); row.setAttribute('data-id', product.id); row.innerHTML = ` <td>${product.id}</td> <td>${product.title}</td> <td>${formatPrice(product.price)}</td> <td>${product.amount}</td> <td> <button type="button" class="btn-primary" onclick="addToCart(${product.id})"> Добавить в корзину </button> </td> `; tableBody.appendChild(row); }); } catch (error) { console.error('Ошибка загрузки товаров:', error); document.getElementById('productsTableBody').innerHTML = `<tr><td colspan="5" class="error">Ошибка загрузки товаров: ${error.message}</td></tr>`; } } // Загрузка начальных данных при загрузке страницы document.addEventListener('DOMContentLoaded', () => { updateCartCounter(); loadProducts(); });