2015-12-14 27 views
0

我做了这个:JavaScript语法错误(限2位小数)

document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2) 

我想要的值限制到小数点后两位。

但与.toFixed(2)我的脚本不起作用,我做错了什么?

完整代码:

<script> 

    var jq111 = jQuery.noConflict(); 

    jq111(function(){ 

    jq111('#_regular_price').on('input', function(){ 

    document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", "."); 

    if(jq111("#prized").val().length > 1) { 
    var discount = document.getElementsByName("discount")[0].value; 
    var cost = document.getElementsByName("duel-cost")[0].value; 
    document.getElementsByName("_sale_price")[0].value = cost - (cost * (discount/100)); 
    } 
    }) 
}); 

<script> 

function updateInput(){ 

    document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", "."); 

    var discount = document.getElementsByName("discount")[0].value; 

    var cost = document.getElementsByName("duel-cost")[0].value; 

    document.getElementsByName("price")[0].value = cost - (cost * (discount/100)); 

    document.getElementsByName("_sale_price")[0].value = document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2); 

} 

</script> 

新:

var element = document.getElementsByName("price")[0]; 

element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ','); 

document.getElementsByName("_sale_price")[0].value = element; 
+2

如果您详细阐述“打破我的脚本”,这将有所帮助。你已经给出了有效的语法,所以还有其他的事情。 –

+0

现在我粘贴我的完整代码 –

+0

可能的重复[为什么我的toFixed()函数不工作?](http://stackoverflow.com/questions/4937251/why-is-my-tofixed-function-not-working) – AGE

回答

2

字符串没有toFixed方法;数字呢。输入的value是一个字符串,这是你在调用replace时所依赖的。

如果value包含JavaScript的规则有效的号码,你可以这样做:

var element = document.getElementsByName("price")[0]; 
element.value = parseFloat(element.value).toFixed(2); 

我不知道你试图用replace做的,所以我离开了这一点。您的完整代码更有意义。在您的原始文件中,您正在用,替换.。但是,你的完整的代码替换,.,这是有道理的,所以:

var element = document.getElementsByName("price")[0]; 
element.value = parseFloat(element.value.replace(',', '.')).toFixed(2).replace('.', ','); 

注意如何我把,回来。

您可能还想将.作为千位分隔符来处理。正确地做到这一点有点复杂,但我们可以将其删除:

var element = document.getElementsByName("price")[0]; 
element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ','); 
+0

我在我的帖子上添加了一个名为“新”的新版本。输入说:[object HTMLInputElement] –

+0

@EugenioSegala:那么你在某处丢失了'.value'。 *编辑:*是的,在最后。请记住,'element'是**元素**,'element.value'是它的'value'属性。 –