2011-12-13 40 views
0

即時通訊試圖弄清楚如何顯示發送訂單所需的每個盒子的最小數量。我完成了大部分工作,但仍然無法完成該計劃。這裏是我迄今爲止在JS:我需要幫助找到最小數量的

var calculate_boxes = function() { 

    var dvds = parseFloat($("dvds").value); 

    //Be sure the value entered is a positive number. 

    var cave = dvds/24; 
    dvds = dvds % 24;  

    var bakers = dvds/13; 
    dvds = dvds % 13; 

    var dimes = dvds/10; 
    dvds = dvds % 10; 

    var quads = dvds/10; 
    dvds = dvds % 10; 

    var twins = dvds/4; 
    dvds = dvds % 4; 

    var minis = dvds/1; 
    dvds = dvds % 1;  

     cave = parseInt($("cave").value); 
    bakers = parseInt($("bakers").value); 
    dimes = parseInt($("dimes").value); 
    quads = parseInt($("quads").value); 
    twins = parseInt($("twins").value); 
    minis = parseInt($("minis").value); 

} 
+0

你面臨的問題是什麼?什麼不起作用? –

+0

你在用最後一塊jQuery對象做什麼? '$(「cave」)'試圖選擇所有''元素,這看起來不正確。對其他人也是如此。另外,jQuery對象沒有'value'屬性。有一個'val()'方法。正如佩卡所問,什麼不是專門工作的?給我們更多的背景。 – FishBasketGordo

回答

1

你以後你覆蓋這些變量與價值觀像cave = parseInt($("cave").value);設置變量,如var cave = dvds/24;,但隨後在功能 - 我猜你所想do是將當前存儲在cave變量中的十進制值轉換爲整數,但是通過使用jQuery代碼$("cave").value您的代碼實際所做的是嘗試選擇標記名稱爲「cave」的元素,即<cave>並獲取其值,然後將該值傳遞給parseInt

在JavaScript中,您可以使用Math中的幾個方法之一將十進制轉換爲整數 - 要使用哪一個取決於您是向上取整還是向下取整或取決於最接近的整數。

爲了您目前的使用目的,您總是希望向下取整,所以請使用Math.floor()。有沒有必要做它在你的函數的最後一個獨立的操作,只是做它立刻:

var cave = Math.floor(dvds/24); 
dvds %= 24; // note that dvds %= 24 is equivalent to dvds = dvds % 24 

var bakers = Math.floor(dvds/13); 
dvds %= 13; 

// etc 

而且,想必你的「聖城」應該除以4,你的「雙胞胎」應該除以2,

另外,我不確定爲什麼你在功能開始的時候用parseFloat()開始 - 它能夠訂購小數的DVD是沒有意義的。除了當前缺少正數數字驗證之外,您還需要檢查是否輸入了整數。

此外,您對「minis」的最終計算是按1進行無意義的除法:在該階段,您知道minis = dvds沒有剩餘dvd,所以您不需要在下一行上進行無意義的模運算。

如果您應用上述更改並擺脫parseInt()的東西,您應該更接近您的目標:嘗試一下並嘗試一下,如果仍然無法正常工作,請回復我們。