Zum Hauptinhalt wechseln
Versand DE 5,99 € / Irland & UK 6,99 € / EU, Schweiz, USA & Kanada 9,99 €
Shop
Menü
SHOP
KONTAKT
DE
EN
function calculatePricePer100m() { const langAttr = document.documentElement.lang; const isEnglish = langAttr === 'en' || window.location.href.includes('/en/'); const lang = isEnglish ? 'en' : 'de'; const priceElement = document.querySelector('.details-product-price__value, .ec-price-item'); const yardageElement = document.querySelector('select[aria-label="Lauflänge"], select[aria-label="Yardage"]'); if (!priceElement) { console.warn('Preiselement nicht gefunden. Selektoren: .details-product-price__value, .ec-price-item'); return; } if (!yardageElement) { console.warn('Lauflängenelement nicht gefunden. Selektoren: select[aria-label="Lauflänge"], select[aria-label="Yardage"]'); return; } let priceText = priceElement.textContent.trim().replace(/[^\d,.]/g, ''); priceText = priceText.replace(',', '.'); const price = parseFloat(priceText); const yardageText = yardageElement.value; const yardageMatch = yardageText.match(/(\d+)\s*m/); const yardage = yardageMatch ? parseInt(yardageMatch[1], 10) : null; let resultText; if (isNaN(price) || !yardage) { console.warn(`Ungültiger Preis (${priceText}) oder keine Lauflänge ausgewählt (${yardageText}). Sprache: ${lang}`); resultText = lang === 'de' ? 'Bitte wählen Sie eine Länge' : 'Please select a length'; } else { const pricePer100m = (price / yardage) * 100; const formattedPrice = lang === 'de' ? pricePer100m.toFixed(2).replace('.', ',') : pricePer100m.toFixed(2); resultText = `${formattedPrice} € / 100m`; } let resultElement = document.querySelector('.price-per-100m'); if (!resultElement) { resultElement = document.createElement('span'); resultElement.className = 'price-per-100m'; resultElement.style.display = 'block'; resultElement.style.fontSize = '0.9em'; resultElement.style.color = '#555'; priceElement.parentNode.insertBefore(resultElement, priceElement.nextSibling); } resultElement.textContent = resultText; console.log(`Berechnung: Sprache=${lang}, Preis=${price || 'ungültig'}, Lauflänge=${yardage || 'keine'}, Grundpreis=${resultText}`); } function observePriceChanges() { const priceElement = document.querySelector('.details-product-price__value, .ec-price-item'); const yardageElement = document.querySelector('select[aria-label="Lauflänge"], select[aria-label="Yardage"]'); if (!priceElement || !yardageElement) { console.warn('Preis- oder Lauflängenelement nicht gefunden für Observer.'); return; } const observer = new MutationObserver(() => { const delay = document.documentElement.lang === 'en' ? 300 : 100; setTimeout(calculatePricePer100m, delay); }); observer.observe(priceElement, { childList: true, characterData: true, subtree: true }); yardageElement.addEventListener('change', () => { const delay = document.documentElement.lang === 'en' ? 300 : 100; setTimeout(calculatePricePer100m, delay); }); } function waitForElements() { const maxAttempts = 30; // Erhöht auf 30 Versuche (ca. 9 Sekunden) let attempts = 0; const interval = setInterval(() => { const priceElement = document.querySelector('.details-product-price__value, .ec-price-item'); const yardageElement = document.querySelector('select[aria-label="Lauflänge"], select[aria-label="Yardage"]'); if (priceElement && yardageElement) { clearInterval(interval); calculatePricePer100m(); observePriceChanges(); } else if (attempts >= maxAttempts) { clearInterval(interval); console.error('Elemente nach maximalen Versuchen nicht gefunden.'); } attempts++; console.log(`Versuch ${attempts}: Preis=${!!priceElement}, Lauflänge=${!!yardageElement}`); }, 300); // Intervall auf 300 ms für schnellere Prüfung } document.addEventListener('DOMContentLoaded', waitForElements);