1-3 dages levering i hverdag
Gratis fragt ved køb over 699,- til udvalgte fragt former

Din indkøbskurv

Din indkøbskurv er tom

Er du ikke sikker på, hvor du skal starte? Prøv disse kategorier:

Farver

Beklager, der er ingen produkter i denne kollektion

Gå til forsiden
async function loadDynamicCrossSells(el) { const productId = el.dataset.productId; if (!productId || el.dataset.dynamicLoaded) return; el.dataset.dynamicLoaded = 'true'; const cartItemIds = el.dataset.cartItems.split(',').map(Number).filter(Boolean); const limit = parseInt(el.dataset.maxProducts) || 4; const formatMoney = (cents) => { return (cents / 100).toLocaleString('da-DK', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' kr.'; }; try { const res = await fetch(`/recommendations/products.json?product_id=${productId}&limit=${limit + cartItemIds.length}&intent=related`); const { products } = await res.json(); const filtered = products .filter(p => !cartItemIds.includes(p.id) && p.available) .slice(0, limit); if (!filtered.length) return; const itemsContainer = el.querySelector('.cross-sells__items'); if (!itemsContainer) return; let itemsHtml = ''; filtered.forEach(product => { const variant = product.variants[0]; const price = formatMoney(variant.price); const compareAtPrice = variant.compare_at_price; const imageUrl = product.featured_image ? product.featured_image.replace(/(\.\w+)(\?.*)?$/, '_80x80_crop_center$1') : null; const imageHtml = imageUrl ? `
${product.title}
` : ''; const priceHtml = compareAtPrice > variant.price ? ` ${formatMoney(compareAtPrice)}
${price}
` : ` ${price} `; const buttonAttrs = product.variants.length === 1 ? `data-add-item-id="${variant.id}"` : `data-quick-add-trigger`; itemsHtml += `
${imageHtml}

${product.title}

${priceHtml}
`; }); itemsContainer.innerHTML = `
${itemsHtml}
`; } catch (e) { console.error('Cross-sells fetch failed:', e); } } document.querySelectorAll('[data-cross-sells]').forEach(loadDynamicCrossSells); const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.addedNodes.forEach((node) => { if (node.nodeType !== 1) return; if (node.matches('[data-cross-sells]')) loadDynamicCrossSells(node); node.querySelectorAll?.('[data-cross-sells]').forEach(loadDynamicCrossSells); }); }); }); observer.observe(document.body, { childList: true, subtree: true });