Как отображать число с пробелом?
Есть код, который при клике по инпуту берет его дата атрибут и плюсует к основной цене
Так вот, все нормально работает до тех пор пока цена будет без пробела. (20000). Есть у кого мысли как сделать чтобы цену брать с пробелом (20 000) и плюсовать к ней? Сейчас нули отсекаются и берется только цена до пробела
function calcPrice(elem, startPrice) { // const inputWrapper = document.querySelector('.cart-js'); const inputItems = elem.querySelectorAll(".card-option"); const price = elem.querySelector("[data-total]"); price.dataset.total = parseInt(startPrice); let currentPrice = parseInt(startPrice); inputItems.forEach(function (item) { const priceEl = item.querySelector("[data-price]"); // const price = document.querySelector('[data-total]'); if (priceEl.checked) { currentPrice += parseInt(priceEl.dataset.price); const total = (price.dataset.total = currentPrice); } }); // console.log(totalPrice) } |
function calcPrice(elem, startPrice) { // const inputWrapper = document.querySelector('.cart-js'); const inputItems = elem.querySelectorAll(".card-option"); const price = elem.querySelector("[data-total]"); price.dataset.total = parseInt(startPrice); let currentPrice = parseInt(startPrice); inputItems.forEach(function (item) { const priceEl = item.querySelector("[data-price]"); // const price = document.querySelector('[data-total]'); if (priceEl.checked) { currentPrice += parseInt(priceEl.dataset.price); const total = (price.dataset.total = currentPrice); } }); // console.log(totalPrice) }
Дополнительно:
price.dataset.total = parseInt(startPrice.replaceAll(' ', '')); |
price.dataset.total = parseInt(startPrice.replaceAll(' ', ''));
- Понял, это заменит вхождение строки, а как потом отобразить с пробелом?
- anmkh, Number.prototype.toLocaleString()
Ответы:
Вот так можно:
function display_with_spaces(num) { let str = String(num); let left = str.length % 3; let res = ''; let ind = 0; if(left > 0) { res = str.substr(ind, left) + ' '; ind += left; while(ind < str.length) { res += str.substr(ind, 3); if(str.length - ind > 3) res = res + ' '; ind += 3; } } else { while(ind < str.length) { res += str.substr(ind, 3); if(str.length - ind > 3) res = res + ' '; ind += 3; } } return res; } |
function display_with_spaces(num) { let str = String(num); let left = str.length % 3; let res = ''; let ind = 0; if(left > 0) { res = str.substr(ind, left) + ' '; ind += left; while(ind < str.length) { res += str.substr(ind, 3); if(str.length - ind > 3) res = res + ' '; ind += 3; } } else { while(ind < str.length) { res += str.substr(ind, 3); if(str.length - ind > 3) res = res + ' '; ind += 3; } } return res; }
Так вот, все нормально работает до тех пор пока цена будет без пробела.
Вы вкурсе как работают числа? Если вы ставите пробел, тогда ваше число уже не является числом, а является строкой
Вы должны работать с числами в оригинальном виде, т.е. без пробелов, таких стандартнов придерживаются программисты. При выводе вы можете их выводить как хотите, хоть на шахматной доске, но изначально вы должны работать с числами в таком виде, как они есть
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для отображения числа с пробелами в PHP можно воспользоваться функцией number_format(). Эта функция форматирует число с разделителями тысяч, десятичными знаками и опциональным знаком валюты.
Пример использования функции number_format() для отображения числа с пробелами:
$number = 1000000; $formatted_number = number_format($number); echo $formatted_number; // Выведет "1 000 000"
Если вы хотите отформатировать число с определенным количеством десятичных знаков, вы можете передать дополнительные параметры функции number_format():
$number = 1234.5678; $formatted_number = number_format($number, 2); // Выведет "1 234.57" echo $formatted_number;
Таким образом, функция number_format() позволяет удобно форматировать числа с пробелами для улучшения их читаемости. Надеюсь, это поможет вам решить вашу проблему!