2014-05-05 119 views
0

好吧,我正在構建一個自定義聯機開票應用程序,並且在創建發票頁面上,我已將其設置爲默認顯示一行項目。但通過點擊「新建行」按鈕,它可以將更多行添加到表中以獲取更多項目。如果你改變主意,你也可以刪除行。使用javascript進行動態計算

現在,所有上述工作都很好。我決定更進一步,並自動計算每行(總行)以及整個表格(總計)的總計。這是我遇到問題的地方。

​​

我有行共有以下的javascript:

function Calculate() { 
    var par = $(this).parent().parent(); 
    var price = $(par).find('input#price').val(); 
    var qty = $(this).val(); 
    var total = price*qty; 
    $(par).find('input#total').val(total); 
    CalculateTotal(total); 
} 

如果price$12.95qty2上面的腳本返回25.9我想它返回$25.90代替。

Grand Total:(從自動上述函數調用)

function CalculateTotal(rowTotal) { 
    y = $("#Gtotal").text(); 
    z = rowTotal; 
    x = +y + +z; 
    $("#Gtotal").text(x); 
} 

基於上述功能上面的例子將返回25.9爲好。我也想要這個返回25.90另外,如果我將表格中的數量更改爲0,則總計不會更改。但是,如果我將數量更改爲2,那麼它將返回38.849999999999994在我使用表進行測試時發現了更多問題。我不會在這裏列出。

很明顯,你可以看到,我需要一個更好的方式來處理javascript中的計算。我不是很有經驗的JavaScript,所以任何幫助都會非常好。我真的需要dynamic calculations in javascript

由於我的代碼不會在這裏以不錯的格式複製。我創建了一個jsFiddle,以允許您查看我的FULL代碼以及我的javascript。 CLICK HERE TO SEE FIDDLE

+0

你可以使用'.toFixed()' – falcon

+0

你忘了添加jquery到你的小提琴 – user1978142

+0

Whoops ...檢查有問題的更新鏈接。 – user3602774

回答

0

您可以使用parseFloat將輸入值轉換爲浮點。並且parseInt用於整數轉換。請務必閱讀文檔如何工作(特別是parseInt,不要忘記指定基數的第二個參數)。

請參閱http://jsfiddle.net/vCs6E/6/工作小提琴。

既然這麼要求的工作代碼,這裏是在計算更新的行()

var total = parseFloat(price) * parseFloat(qty);

+0

在你的小提琴中,總計似乎沒有正確更新。輸入數字1,然後輸入2。它不匹配。 – user3602774

+0

事實上,這是因爲CalculateTotal()實現有問題。您每次增加總計總數,而不是累計個別訂單項總計... – DevDude

+0

我不是很擅長JavaScript,你能幫助我嗎...什麼是更好的方法? – user3602774

0

使用覈對答案,這一起:

var someNumber = 99.999923423; 

// shows 99.99 
console.log(someNumber.toFixed(2)); 

會有所幫助。