Почему я получаю сообщение об ошибке, что .replace не является функцией? [дубликат]

12
задан anleon 29 June 2010 в 19:22
поделиться

3 ответа

cLitreKgValue может быть числом в точке, где вы пытаетесь вызвать replace на нем, а не строкой. В этом случае ошибка верна - числа не имеют метода replace .

21
ответ дан 2 December 2019 в 03:32
поделиться

Измените это:

cLitreKgValue.replace(/,/g, '.')

на

("" + cLitreKgValue).replace(/,/g, '.')
14
ответ дан 2 December 2019 в 03:32
поделиться

Хотя другие ответы работают (и верны, числа не имеют .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 не имеет чистого эффекта, просто пропустите его :)

3
ответ дан 2 December 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: