2015-12-14 55 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'屬性。 –