Advertisement
oscarviedma

Código funcionalidad JavaScript Variaciones WA

Nov 18th, 2023
1,615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. document.addEventListener('DOMContentLoaded', function () {
  2. const productos = document.querySelectorAll('.producto');
  3. const carritoLista = document.getElementById('carrito-lista');
  4. const total = document.getElementById('total');
  5. const carritoContainer = document.getElementById('carrito-container');
  6. const carritoIcon = document.getElementById('carrito-icon');
  7. const carritoContador = document.getElementById('carrito-contador');
  8. const cerrarCarrito = document.getElementById('cerrar-carrito');
  9. const enviarWhatsAppButton = document.getElementById('enviar-whatsapp');
  10. const carritoVacioMensaje = document.getElementById('carrito-vacio-mensaje');
  11. const vaciarCarritoButton = document.getElementById('vaciar-carrito');
  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 = '';
  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.     const tallaSelect = producto.querySelector('#talla' + (index + 1));
  99.     const colorSelect = producto.querySelector('#color' + (index + 1));
  100.    
  101.     agregarButton.addEventListener('click', () => {
  102.         let tallaSeleccionada = tallaSelect ? tallaSelect.value : null;
  103.         let colorSeleccionado = colorSelect ? colorSelect.value : null;
  104.  
  105.         // Verificar si se requiere alguna variante antes de agregar al carrito
  106.         if ((tallaSelect && tallaSeleccionada) || !tallaSelect) {
  107.             if ((colorSelect && colorSeleccionado) || !colorSelect) {
  108.                 let nombreConVariantes = `${nombre}`;
  109.                 if (tallaSelect && tallaSeleccionada) {
  110.                     nombreConVariantes += ` - Talla ${tallaSeleccionada}`;
  111.                 }
  112.                 if (colorSelect && colorSeleccionado) {
  113.                     nombreConVariantes += ` - Color ${colorSeleccionado}`;
  114.                 }
  115.                 agregarProductoAlCarrito(nombreConVariantes, precio);    
  116.             }  else {
  117.                 alert("Por favor, selecciona el color antes de agregar al carrito.");
  118.             }
  119.         } else {
  120.             alert("Por favor, selecciona la talla antes de agregar al carrito.");
  121.         }
  122.     });
  123. });
  124.  
  125. // Evento para enviar detalles del carrito a WhatsApp
  126. enviarWhatsAppButton.addEventListener('click', () => {
  127.     const carritoTexto = carrito.map(producto => {
  128.         return `${producto.nombre} - $${producto.precio}`;
  129.     }).join('\n'); // Usamos \n para separar líneas en WhatsApp
  130.     const mensajeWhatsApp = '*Mi Pedido:*\n' + carritoTexto + '\n*TOTAL: $' + carritoTotal + '*';
  131.     const whatsappURL = `https://wa.me/529512345678?text=${encodeURIComponent(mensajeWhatsApp)}`;
  132.     window.open(whatsappURL, '_blank');
  133. });
  134.  
  135. // Inicialmente, mostrar el mensaje de carrito vacío
  136. mostrarMensajeCarritoVacio();
  137. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement