我有这个功能:
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不是一个函数,但在其他函数中它可以正常工作。有什么区别?
答案 0 :(得分:20)
cLitreKgValue
可能是您尝试在其上调用replace
而非字符串的数字。在这种情况下,错误是正确的 - 数字没有replace
方法。
答案 1 :(得分:14)
改变这个:
cLitreKgValue.replace(/,/g, '.')
到
("" + cLitreKgValue).replace(/,/g, '.')
答案 2 :(得分:5)
你可以使用函数String()
即;字符串(cLitreKgValue).replace ....
字符串功能:
http://www.w3schools.com/jsref/jsref_string.asp
答案 3 :(得分:3)
虽然其他答案有效(并且正确,数字没有.replace()
,但它是String
method),我认为整体结构更改更好,如下所示:
$("#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
没有网络效果,只是跳过它:)