为什么我收到.replace不是函数的错误消息?

我有这个function:

function countLitreKgSums(cProductIds){ var cLitreKgSums = new Array(); var cWeek = 0; for(i=0;i<cProductIds.length;i++){ var cLitreKgSum = 0; $("#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 = 0; } cLitreKgValue = cLitreKgValue.replace(/,/g, '.').replace(/[^\d\.]/g, '').replace(/\s/g, ''); cLitreKgValue = parseFloat(cLitreKgValue); cLitreKgSum += cLitreKgValue; }); cLitreKgSum = Math.round(cLitreKgSum * 100) / 100; cLitreKgSums[i] = cLitreKgSum; } return cLitreKgSums; //console.log(cLitreKgSums); } 

我收到错误信息,即.replace不是一个函数,但在其他函数中它可以正常工作。 有什么不同?

cLitreKgValue可能是您尝试在其上调用replace而不是字符串的点上的数字。 在这种情况下,错误是正确的 – 数字没有replace方法。

改变这个:

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

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

你可以使用函数String()
即; 字符串(cLitreKgValue).replace ….
字符串function:
http://www.w3schools.com/jsref/jsref_string.asp

虽然其他答案工作(并且正确,数字没有.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并且不影响结果时,没有理由做所有的工作,所以如果""表示0并且anything += 0没有净效果,那就跳过它:)