Привет, у меня есть очень простая проблема, но я не понимаю, почему это происходит, у меня есть ряд значений, которые я беру около input
, и моя цель состоит в том, чтобы добавить эти значения, но проблема в том, что когда я пытаюсь добавить их, я объединяю вместо этого , Вот мой сценарий.
var lun, mart, mier, juev, vier, sab, domin;
lun = $('#lun').val();
mart = $('#mart').val();
mier = $('#mier').val();
juev = $('#juev').val();
vier = $('#vier').val();
sab = $('#sab').val();
domin = $('#domin').val();
$('#ventasError').addClass('hidden');
lun = parseFloat(lun).toFixed(2);
mart = parseFloat(mart).toFixed(2);
mier = parseFloat(mier).toFixed(2);
juev = parseFloat(juev).toFixed(2);
vier = parseFloat(vier).toFixed(2);
sab = parseFloat(sab).toFixed(2);
domin = parseFloat(domin).toFixed(2);
let sumVSem = lun + mart + mier + juev + vier + sab + domin;
debugger //justo sumVSem aquí me tira 1.001.001.001.001.001.001.00 en lugar 7.00
sumVSem = parseFloat(sumVSem).toFixed(2);
$('#promSemanal').val(sumVSem);
Может кто-нибудь сказать мне, что я делаю неправильно?
let sumVSem = parseFloat(lun) + parseFloat(mart) + parseFloat(mier) + parseFloat(juev) + parseFloat(vier) + parseFloat(sab) + parseFloat(domin);
С этим уже ты deberГ, - чтобы функционировать.
Хороший dГ - Как уже они сказали
наверху, метод toFixed()
возврати string, если ты хочешь поддержать это asГ, - можешь изменять ты cГіdigo таким образом, добавляя один parseFloat()
к каждой переменной во время делания суммы.
$( document ).ready(function() {
var lun, mart, mier, juev, vier, sab, domin;
lun = $('#lun').val();
mart = $('#mart').val();
mier = $('#mier').val();
juev = $('#juev').val();
vier = $('#vier').val();
sab = $('#sab').val();
domin = $('#domin').val();
$('#ventasError').addClass('hidden');
lun = parseFloat(lun).toFixed(2);
mart = parseFloat(mart).toFixed(2);
mier = parseFloat(mier).toFixed(2);
juev = parseFloat(juev).toFixed(2);
vier = parseFloat(vier).toFixed(2);
sab = parseFloat(sab).toFixed(2);
domin = parseFloat(domin).toFixed(2);
let sumVSem = parseFloat(lun) + parseFloat(mart) + parseFloat(mier) + parseFloat(juev) + parseFloat(vier) + parseFloat(sab) + parseFloat(domin);
console.log(sumVSem);
//justo sumVSem aquí me tira 1.001.001.001.001.001.001.00 en lugar 7.00
// sumVSem = parseFloat(sumVSem).toFixed(2);
// $('#promSemanal').val(sumVSem);
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<script>
</script>
<body>
<input type="text" id="lun" value="1">
<input type="text" id="mart" value="1">
<input type="text" id="mier" value="1">
<input type="text" id="juev" value="1">
<input type="text" id="vier" value="1">
<input type="text" id="sab" value="1">
<input type="text" id="domin" value="1">
</body>
</html>
Надеялся, что он подает тебе
Хотя уже у тебя есть получающий ответ, мой ответ enfocarГЎ в оптимизировании немного того, что estГЎs пробуя делать.
EstГЎs повторяя того же самого cГіdigo 7 раз (1 раз из-за каждый dГ - в недели, представленный в твоих элементах <input>
).
Способ предотвращать эту repeticiГіn serГ, - чтобы заносить в список твои элементы в типе array
и использовать их mГ©todo свойственные тому же самому.
Давайте Предполагать, что твой HTML приходит данный asГ - (все элементы тип <input>
- прямые дети элемента отец тип <div>
):
<div id="dias">
<input type="text" id="lun" value="0">
<input type="text" id="mar" value="0">
...
<input type="text" id="dom" value="0">
</div>
PodrГ-Схвати делать следующее:
let valores = [];
if($('#dias').children().length) {
$('#dias').children().each((index, element) => {
valores.push(parseFloat(element.value));
});
}
let suma = valores.length ? valores.reduce((sum, curr) => sum + curr).toFixed(2) : "0.00";
console.log(suma);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dias">
<input type="text" id="lun" value="0.1234">
<input type="text" id="mar" value="0.2345">
<input type="text" id="mie" value="0.3456">
<input type="text" id="jue" value="0.4567">
<input type="text" id="vie" value="0.5678">
<input type="text" id="sab" value="0.6789">
<input type="text" id="dom" value="0.7890">
</div>
, Поскольку ты можешь наблюдать, я объявляю тип array
, чтобы хранить стоимость каждого элемента input
конвертируемых в тип Number
используя parseFloat()
. Потом я использую mГ©todo reduce()
, чтобы складывать всю стоимость array
и возвращать стоимость Гєnico, к которой потом я применяю к нему mГ©todo toFixed()
, чтобы получать желанный результат.
С этим cГіdigo - mГЎs чистый, и менее повторный.