Advertisement
oscarviedma

JS para agregar la funcionalidad carrito pedidos WA

Nov 13th, 2023 (edited)
2,585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.50 KB | None | 0 0
  1. <script>
  2. document.addEventListener('DOMContentLoaded', function () {
  3.     const productos = document.querySelectorAll('.producto');
  4.     const carritoLista = document.getElementById('carrito-lista');
  5.     const total = document.getElementById('total');
  6.     const carritoContainer = document.getElementById('carrito-container');
  7.     const carritoIcon = document.getElementById('carrito-icon');
  8.     const carritoContador = document.getElementById('carrito-contador');
  9.     const cerrarCarrito = document.getElementById('cerrar-carrito');
  10.     const enviarWhatsAppButton = document.getElementById('enviar-whatsapp');
  11.     const carritoVacioMensaje = document.getElementById('carrito-vacio-mensaje');
  12.  
  13.     let carrito = [];
  14.     let carritoTotal = 0;
  15.  
  16.     carritoIcon.addEventListener('click', function() {
  17.         const carritoVisible = carritoContainer.style.right === '0px';
  18.         carritoContainer.style.right = carritoVisible ? '-350px' : '0px';
  19.  
  20.         if (carritoVisible) {
  21.             carritoVacioMensaje.style.display = 'none';
  22.         }
  23.     });
  24.  
  25.     cerrarCarrito.addEventListener('click', function() {
  26.         carritoContainer.style.right = '-350px';
  27.     });
  28.  
  29.     // Función para desplazar el carrito
  30.     function desplazarCarrito() {
  31.     const anchoPantalla = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
  32.  
  33.     if (anchoPantalla > 768) {
  34.         carritoContainer.style.right = '0px';
  35.         carritoVacioMensaje.style.display = 'none';
  36.     }
  37. }
  38.  
  39.     // Función para mostrar o ocultar el mensaje de carrito vacío
  40.     function mostrarMensajeCarritoVacio() {
  41.         if (carrito.length === 0) {
  42.             carritoVacioMensaje.style.display = 'block';
  43.         } else {
  44.             carritoVacioMensaje.style.display = 'none';
  45.         }
  46.     }
  47.  
  48.     // Agregar producto al carrito
  49.     function agregarProductoAlCarrito(nombre, precio) {
  50.         const producto = { nombre, precio };
  51.         carrito.push(producto);
  52.  
  53.         const listItem = document.createElement('li');
  54.         listItem.textContent = `${nombre} - $${precio}`;
  55.         const eliminarButton = document.createElement('a');
  56.         eliminarButton.innerHTML = '&#xe051;';
  57.         eliminarButton.classList.add('eliminar');
  58.         eliminarButton.addEventListener('click', () => eliminarProductoDelCarrito(producto, listItem));
  59.         listItem.appendChild(eliminarButton);
  60.         carritoLista.appendChild(listItem);
  61.  
  62.         // Actualizar el total
  63.         carritoTotal += precio;
  64.         total.textContent = carritoTotal;
  65.  
  66.         // Actualizar el contador del carrito
  67.         carritoContador.textContent = carrito.length;
  68.  
  69.         // Desplazar automáticamente al carrito
  70.         desplazarCarrito();
  71.  
  72.         // Mostrar u ocultar el mensaje de carrito vacío
  73.         mostrarMensajeCarritoVacio();
  74.     }
  75.  
  76.     // Eliminar producto del carrito
  77.     function eliminarProductoDelCarrito(producto, listItem) {
  78.         const index = carrito.indexOf(producto);
  79.         if (index !== -1) {
  80.             carrito.splice(index, 1);
  81.             carritoLista.removeChild(listItem);
  82.             carritoTotal -= producto.precio;
  83.             total.textContent = carritoTotal;
  84.  
  85.             // Actualizar el contador del carrito
  86.             carritoContador.textContent = carrito.length;
  87.  
  88.             // Mostrar u ocultar el mensaje de carrito vacío
  89.             mostrarMensajeCarritoVacio();
  90.         }
  91.     }
  92.  
  93.     // Evento para agregar producto al carrito
  94.     productos.forEach((producto, index) => {
  95.         const agregarButton = producto.querySelector('.agregar');
  96.         const nombre = agregarButton.getAttribute('data-nombre');
  97.         const precio = parseFloat(agregarButton.getAttribute('data-precio'));
  98.         agregarButton.addEventListener('click', () => {
  99.             agregarProductoAlCarrito(nombre, precio);
  100.         });
  101.     });
  102.  
  103.     // Evento para enviar detalles del carrito a WhatsApp
  104.     enviarWhatsAppButton.addEventListener('click', () => {
  105.         const carritoTexto = carrito.map(producto => {
  106.             return `${producto.nombre} - $${producto.precio}`;
  107.         }).join('\n'); // Usamos \n para separar líneas en WhatsApp
  108.         const mensajeWhatsApp = '*Mi Pedido:*\n' + carritoTexto + '\n*TOTAL: $' + carritoTotal + '*';
  109.         const whatsappURL = `https://wa.me/529512345678?text=${encodeURIComponent(mensajeWhatsApp)}`;
  110.         window.open(whatsappURL, '_blank');
  111.     });
  112.  
  113.     // Inicialmente, mostrar el mensaje de carrito vacío
  114.     mostrarMensajeCarritoVacio();
  115. });
  116. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement