Формат для поля с ценой
Добрый день, не могли бы вы помочь с довольно таки простым на первый взгляд вопросом, преобразование цифрового значения в денежный с пробелом. Например у меня есть поле
<span class="price__new-val font_17">8500</span> Выводиться оно как 8500 Можно ли как то сделать так что бы оно выводилось в так: 8 500 руб. (то есть тысячные отделены пробелом |
Использовал такой способ
<div class="price__new-val">1000000</div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function() { var number = $('.price__new-val').text(); var formattedNumber = Number(number).toLocaleString(); $('.price__new-val').text(formattedNumber); }); </script> Здесь скорее всего надо наверное преобразование значение к числовому и уже после придавать формат |
Цитата:
<div class="price__new-val">1000000</div> <script> document.querySelectorAll('.price__new-val').forEach(o => { o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& '); }); </script> |
Что бы добавить префикс руб. использовал этот код:
<script> var targetElement = document.querySelector('.price__new-val') ; targetElement.insertAdjacentHTML("beforeEnd", " руб."); </script> |
Да он работает на дестопе, но почему то когда закидываю его на релиз в Битрикс, он не работает.
|
Цитата:
o.textContent = o.textContent.replace(/\d(?=(\d{3})+$)/g, '$& ') + ' руб'; |
А почему не воспользоваться форматтером Intl.NumberFormat?
<div class="price__new-val">1000000</div> <script> document.querySelectorAll('.price__new-val').forEach(node => { node.textContent = (+node.textContent).toLocaleString('ru', { style: 'currency', currency: 'RUB', minimumFractionDigits: 0, currencyDisplay: 'narrowSymbol', }); }); </script> |
Часовой пояс GMT +3, время: 04:18. |