我有一个从输入字段获取数字的函数,数字是逗号而不是小数点(123,5),所以我做的是将它们转换为replace以进行计算,然后再将它们替换为逗号显示结果,但它在最后一次替换中给我带来问题,这是在ajax return
中错误:"ncaught TypeError: subt1.replace is not a function at XMLHttpRequest.ajax.onreadystatechange"
我得到正确的计算,但是当我尝试将其转换为逗号十进制时不起作用 我打扰是因为打字但是我没弄错
继承我的代码
function updateCarrito(id,precio,moneda) {
var cant=document.getElementsByName("carrito_cantidad_"+id)[0].value;
var ajax=nuevoAjax();
var contenedor=parent.document.getElementById('iconCarrito');
var subt1=document.getElementById('cantidad_compra1_'+id).value;
if (moneda==1){
var tot=document.getElementById('total_compra_pesos').value;
}else{
var tot=document.getElementById('total_compra_dolares').value;
}
subt1 = subt1.replace(/\./g, '').replace(',', '.');
tot = tot.replace(/\./g, '').replace(',', '.');
ajax.open("GET", "http://www.somestuff.com?req=updateCarrito&id="+id+"&cant="+cant+"&precio="+precio,true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText;
tot=(tot-subt1);
subt1=(precio*cant);
subt1 = subt1.replace('.', ',');
document.getElementById('cantidad_compra1_'+id).value=subt1;
tot=(tot+subt1);
tot = tot.replace('.', ',');
if (moneda==1){
document.getElementById('total_compra_pesos').value=tot;
document.getElementById('total_compra_pesos2').value=tot;
}else{
document.getElementById('total_compra_dolares').value=tot;
document.getElementById('total_compra_dolares2').value=tot;
}
}
};
ajax.send(null);
}
答案 0 :(得分:1)
看起来您正在调用数字而不是字符串替换。 subt1=(precio*cant);
会将类型从字符串更改为数字。
你需要在调用replace之前进行强制转换。
subt1 = subt1.toString().replace('.', ',');
编辑:看起来我在评论中遭到殴打。
答案 1 :(得分:1)
以下是将数字转换为字符串的几种方法:
subt1 = String(precio*cant)
subt1 = (precio*cant).toString()
subt1 = (precio*cant) + ''
使用这些方法中的任何一种 subt1.replace
将按预期工作