cLitreKgValue
может быть числом в точке, где вы пытаетесь вызвать replace
на нем, а не строкой. В этом случае ошибка верна - числа не имеют метода replace
.
Измените это:
cLitreKgValue.replace(/,/g, '.')
на
("" + cLitreKgValue).replace(/,/g, '.')
Хотя другие ответы работают (и верны, числа не имеют .replace ()
, это метод String
), я думаю, что общее изменение структуры лучше, например так:
$("#plan_table td[class='week']").each(function(){
cWeek = $(this).html();
var cLitreKgValue = $("input[name*='plan_table_week" + cWeek + "_prod" + cProductIds[i] + "_']").val();
if (cLitreKgValue !== "") {
cLitreKgValue = cLitreKgValue.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/\s/g, '');
cLitreKgSum += parseFloat(cLitreKgValue);
}
});
Нет причин выполнять всю эту работу, если вы знаете, что это 0
и не влияет на результат, поэтому if ""
означает 0
и ничего + = 0
не имеет чистого эффекта, просто пропустите его :)