我编写了一个简单的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 if if语句? (p.s)地点和价格之间没有数学相关性。)
提前感谢您的所有时间和回复。
答案 0 :(得分:4)
简单,使用对象:
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);
答案 1 :(得分:2)
首先想到的是一张地图,如下:
var map = {
'None': 0,
'Acworth': 175,
...
};
答案 2 :(得分:0)
除了已经建议的object
选项之外,我肯定建议放弃这种方法并采用更灵活的方法。城市和城市每年合并和创建,因此维护您的收藏将是地狱。我建议使用Ajax回调到服务器,在那里你可以调用Google Maps API来提供到交付地点的实际距离的猜测,然后对它应用一个简单的公式(如果需要,只有当它不在时)附近城市的预定义成本集。)
答案 3 :(得分:0)
要添加到Alberto的答案中,或许还可以将交货地点划分为区域,然后将您的位置映射到这些区域?这样,您可以在成本发生变化的同时更改整组交货价格。 (更改区域价格而不是同一区域内的37个单独价格。)
这可能在代码中效率较低,但对于可维护性而言效率要高得多。
(当然,除非所有400个地点都有一个独特的价格。然后没有必要。)