#javascript #jquery #html-table #decimal
Вопрос:
Я делаю запрос к своей базе данных, чтобы вернуть значение двойной точности. Это значение в моей базе данных достигает 17 знаков после запятой, но я хочу отображать только 2 знака после запятой на веб-странице.
Это мой html-код с таблицей. Значение десятичной дроби переходит в {{savings_percent}}
<table class="table text-light text-end">
<thead>
<tr>
<th scope="col">CHW</th>
</tr>
</thead>
<tbody class="text-end">
<tr id="decimal">
<th scope="row">%</th>
{{#with chw}}
<td class='rounded'>{{savings_percent}}</td>
{{/with}}
</tbody>
</table>
Вот как я пытаюсь получить значение, преобразовать его в десятичное, а затем присвоить ему фиксированное число из двух десятичных знаков. Консоль выдает мне $(…).val(…).toFixed-это не функция.
У кого-нибудь есть решение о том, как я могу это исправить?
let decimal = parseFloat($("#decimal .rounded").text())
window.onload = () => {
$('.rounded').val(decimal).toFixed(2)
console.log(decimal)
};
Ответ №1:
Это должно быть
$('#decimal').val(decimal.toFixed(2))
Звоните toFixed
по номеру, а не по возвращаемому объекту jQuery .val()
.
Комментарии:
1.
val()
предназначен только для элементов управления формами
Ответ №2:
val()
предназначен только для элементов управления формами
Я бы использовал text(function)
, который дает вам текущий текст, чтобы сделать то, что вам нужно, прежде чем возвращать изменения
$('.rounded').text(function(i,curr){
return parseFloat(curr).toFixed(2)
})
Комментарии:
1. Это сработало и для моего последнего вопроса. Спасибо!
Ответ №3:
Если вам не нужно использовать decimal
в качестве числа где-то еще, нет необходимости преобразовывать его в число, а затем обратно в строку, просто чтобы обрезать ненужные цифры. Вы могли бы просто сделать:
let decimal = $("#decimal .rounded").text().substring(0, $("#decimal .rounded").text().indexOf('.') 3);
или, чтобы сделать его более читабельным:
let decimal = $("#decimal .rounded").text(); // retrieve the numeric string
let truncated = decimal.substring(0, decimal.indexOf('.') 3) // get the substring from the beginning to the second character after the '.' (included)
или вы можете использовать регулярное выражение:
let decimal = $("#decimal .rounded").text().match(/d .d{2}/)[0]