8.完成設定功能

kyo4311發表於2015-07-16

在需求之初,我們有四個設定
1.設定最小購買量
2.設定最大購買量
3.設定庫存
4.設定倍數購買

現在我們把這四個設定先善一下:

//設定最小購買量
Quantity.prototype.setMinbuy = function (n) {
    this.minbuy = Number(n);
};

//設定最大購買量
Quantity.prototype.setMaxbuy = function (n) {
    this.maxbuy = Number(n);
};

//設定庫存
Quantity.prototype.setStock = function (n) {
    this.stock = Number(n);
};

//設定倍數購買
Quantity.prototype.setTuple = function (n) {
    this.tuple = n;
};

上面的程式碼不復雜,就是一些簡單的設定,我們發現當隨便設定了那個引數之後,都會影響真實的最大購買量和最小購買。因此這4個方法執行之後,我將他統一執行一個函式,於是我就多了這麼一個方法。

//設定值後,重新整理一些狀態
Quantity.prototype.reinit = function () {

};

重新整理哪些狀態?

1.真實的最大購買量和真實的最小購買量要先算出來
2.將當前的選中數變成真實的最小購買量
3.介面上顯示真實的最小購買量
4.其他的變數將來也可以寫在裡面。

然後就按這些需求寫程式碼:

//設定值後,重新整理一些狀態 
Quantity.prototype.reinit = function () {
    //1.真實的最大購買量和真實的最小購買量計算
    this.tupleMaxbuy = Math.floor(Math.min(this.maxbuy, this.stock) / this.tuple) * this.tuple;
    this.tupleMinbuy = Math.max(Math.ceil(this.minbuy / this.tuple) * this.tuple, this.tuple);

    //2.將當前的選中數變成真實的最小購買量
    this.no = this.tupleMinbuy;

    //3.介面上顯示真實的最小購買量
    this.numBox.text(this.tupleMinbuy);

    //4.其他要變化的內容
};

示例程式碼:http://jsfiddle.net/gs_jquery/cx43x374/ 另外在上面的四個設定方法都需要執行一下reinit這個方法。

真實最大購買量的演算法

  1. 比較這個商品的最大購量和真實的存量,選小的那個
  2. 結合倍數購買量再計算。如最大購買量7,而要求按2的倍數買,說明最大隻能到6

真實最小購買量的演算法

1.比較這個商品的最小購量和倍數購買,選大的那個
2.結合倍數購買量再計算。

簡單的測試一下

quantity.setTuple(2);
quantity.setMinbuy(3);
quantity.setMaxbuy(21);
quantity.setStock(11);

傳了一些值進去,然後進行簡單的測試:http://jsfiddle.net/gs_jquery/utL64xp2/

Math的其中三個方法

//1.向上取整:
Math.ceil(3.3);       
//2.向下取整:
Math.floor(3.3);    
//3.四捨五入:
Math.round(3.3);    
Math.round(3.8);  

很有用的三個方法基礎方法,有時候可以很巧妙的解決一些問題。

相關文章