簡體   English   中英

我如何使此交付計算器更有效?

[英]How do I make this Delivery calculator more efficient?

我編寫了一個簡單的JavaScript函數,該函數使網站訪問者可以了解公司運送到該地點所花費的費用。 它只是一個讓他們從下拉菜單中選擇城市的功能,然后它將顯示價格。 下面是我決定如何定義要打印的變量的方法。

var delivery=document.getElementById("delivery").value; //id of selection box

var deliveryCharge;
if (delivery=="None")
{
deliveryCharge=0;
}
else if (delivery=="Acworth")
{
deliveryCharge=175;
}
else if (delivery=="Alpharetta")
{
deliveryCharge=140;
}

那我用

document.getElementById("charge").innerHTML="$" + deliveryCharge.toFixed(2);

顯示金額。 問題是我需要在HTML輸入和JavaScript中放置400個位置。 我想知道的是大家都將如何實現此功能,是否有更有效的方法,這樣我就不必編寫400 else if語句了? (ps)位置和價格之間沒有數學關聯。)

預先感謝大家的時間和回復。

簡單,使用一個對象:

var deliveryCharges = {
    "None": 0,
    "Alpharetta": 400,
    "Test": 200
};
function getDeliveryCharge(type) {
    var currentType = type || "None"; // undefined and null out of the way.
    if (typeof deliveryCharges[currentType] !== 'undefined') {// No error thrown here.
        return deliveryCharges[currentType];// type recognized return it
    } else {
        return 0;// type not found, just return 0;
    };
};

現在實際得到它:

var delivery= getDeliveryCharge(document.getElementById("delivery").value);

首先想到的是一張地圖,就像這樣:

var map = {
    'None': 0,
    'Acworth': 175,
    ...
};

除了已經建議的object選項之外,我絕對會建議放棄這種方法,而選擇一種更靈活的方法。 城市和城市每年都會合並和創建,因此維護您的收藏將是地獄。 我建議對服務器使用Ajax回調,您可以在其中調用Google Maps API來估計到交貨位置的實際距離,然后對其應用一個簡單的公式(如果需要的話,只要不在其中為附近城市預定義的一組費用)。

要增加Alberto的答案,也許還可以將交貨地點划分為多個區域,然后將您的地點映射到這些區域? 這樣,您可以在成本發生變化的同時更改整個交貨價格組。 (更改區域價格,而不是更改同一區域內的37個單獨價格。)

這可能在代碼中效率較低,但在可維護性方面效率較高。

(當然,除非所有400個地點都真正具有唯一的價格。然后就沒有必要了。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM