Ajax替换数字点到逗号不起作用

时间:2017-03-15 18:55:16

标签: javascript php ajax

我有一个从输入字段获取数字的函数,数字是逗号而不是小数点(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);

}

2 个答案:

答案 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将按预期工作