<сценарий> document.addEventListener('DOMContentLoaded', функция() { const blockID = '#rec1238520371'; const targetBlock = документ.Выбор запроса(blockID); if (!targetBlock) возвращает; // 1. Функция получения курса валют async function getCNYRate() { try { // Используем бесплатный API для получения курсов (паре CNY/RUB) const response = await fetch('https://open.er-api.com/v6/latest/CNY'); const data = await response.json(); if (data && data.rates && data.rates.RUB) { console.log('Курс юаня успешно получен:', data.rates.RUB); return data.rates.RUB; } else { throw new Error('Не удалось извлечь курс из ответа API'); } } catch (error) { console.error('Ошибка при получении курса:', error); return 11,5; // Резервный курс на случай, если API не ответит } } // 2. Функция конвертации function convertPrices(rate) { const priceElements = targetBlock.querySelectorAll('.js-product-price, .t-store__card__цена-значение'); priceElements.forEach(priceEl => { if (priceEl.getAttribute('data-converted') === 'true') return; let rawPrice = priceEl.innerText.replace(/\s/g, '').replace(',', '.'); let numericPrice = parseFloat(rawPrice); if (!isNaN(numericPrice)) { let newPrice = Math.ceil(numericPrice * rate); let formattedPrice = newPrice.toLocaleString('ru-RU'); priceEl.innerHTML = formattedPrice; priceEl.setAttribute('data-converted', 'true'); } }); } // 3. Основной запуск getCNYRate().then(rate => { // Конвертируем сразу convertPrices(rate); // Следим за динамическими изменениями (фильтры, пагинация) const observer = new MutationObserver(() => convertPrices(rate)); observer.observe(targetBlock, { childList: true, subtree: true }); }); });