<сценарий>
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 });
});
});