[英]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.