我们有一个现有的地毯清洁区域计算器,我需要协助编辑代码。
如果选中MOVE_FURNITURE_NO或MOVE_FURNITURE_EMPTY,则计算器当前正在运行,要清洁的价格打折20%。如果检查光纤保护器,苏格兰威士忌或者decon,他们每平方英尺的价格是25美元。
以下是我遇到问题的表单上的复选框:
<input type="checkbox" id="FIBER_PROTECTOR" /> Fiber ProTector
<input type="checkbox" id="SCOTCHGARD" /> Scotchgard
<input type="checkbox" id="DECON" /> Decontaminate & Deodorize
<input type="checkbox" id="MOVE_FURNITURE_EMPTY" /> No, The Room Is Empty
<input type="checkbox" id="MOVE_FURNITURE_NO" /> No, Clean Around It
现在我们正在尝试更新for,以便&#34; MOVE_FURNITURE_NO&#34;检查并选中DECON,FIBER PROTECTOR或SCOTCHGARD中的一个,任何一个或全部,它们应该是20%的折扣。
但是...
当&#34; MOVE_FURNITURE_EMPTY&#34;检查,选中DECON,FIBER PROTECTOR或SCOTCHGARD中的一个,任何一个或全部,它们应该是全价。
这些是我目前的Javascript计算:
if (options.FIBER_PROTECTOR == 'on') total += Math.max(sq * FIBER_PROTECTOR, OTHER_SERVICES_MIN);
if (options.SCOTCHGARD == 'on') total += Math.max(sq * SCOTCHGARD, OTHER_SERVICES_MIN);
if (options.DECON == 'on') total += Math.max(sq * DECON, OTHER_SERVICES_MIN);
我尝试了这段代码,但计算是将所有三个加在一起,而不是有条件地添加:
if (options.MOVE_FURNITURE_NO == 'on' || options.FIBER_PROTECTOR == 'on') total += Math.max(sq * .032 / FIBER_PROTECTOR, OTHER_SERVICES_MIN);
if (options.MOVE_FURNITURE_NO == 'on' || options.SCOTCHGARD == 'on') total += Math.max(sq * .032 / SCOTCHGARD, OTHER_SERVICES_MIN);
if (options.MOVE_FURNITURE_NO == 'on' || options.DECON == 'on') total += Math.max(sq * .032 / DECON, OTHER_SERVICES_MIN);
在网站的价格细分部分也应该计算相同的价格,这是我们当前使用的代码:
if (item_val == 'on') {
switch (optname) {
case 'FIBER_PROTECTOR':
ul += '<span class="price_breakdown">$' + Math.max(sq_ft * FIBER_PROTECTOR, OTHER_SERVICES_MIN).toFixed(2) + '</span>';
break;
case 'SCOTCHGARD':
ul += '<span class="price_breakdown">$' + Math.max(sq_ft * SCOTCHGARD, OTHER_SERVICES_MIN).toFixed(2) + '</span>';
break;
case 'DECON':
ul += '<span class="price_breakdown">$' + Math.max(sq_ft * DECON, OTHER_SERVICES_MIN).toFixed(2) + '</span>';
break;
我知道这有很多要问,但谢谢你提前帮忙。
答案 0 :(得分:0)
您说明在选中MOVE_FURNITURE_NO
时需要应用折扣并选中其他选项。但您的代码使用或而不是和。您应该在其他选项之间使用||
来查看是否设置了其中任何一个,然后使用&&
MOVE_FURNITURE_NO
。
在下面的代码中,我没有在大if
中进行价格计算,我只设置了一个discount
变量。然后我在将每个选项的价格添加到总数时使用它。
if (options.MOVE_FURNITURE_NO == 'on' && options.MOVE_FURNITURE_EMPTY != 'on' &&
(options.FIBER_PROTECTOR == 'on' ||
options.SCOTCHGARD == 'on' ||
options.DECON == 'on')) {
discount = 0.32; // reduced price
} else {
discount = 1; // full price
}
if (options.FIBER_PROTECTOR == 'on') total += Math.max(discount * sq * FIBER_PROTECTOR, OTHER_SERVICES_MIN);
if (options.SCOTCHGARD == 'on') total += Math.max(discount * sq * SCOTCHGARD, OTHER_SERVICES_MIN);
if (options.DECON == 'on') total += Math.max(discount * sq * DECON, OTHER_SERVICES_MIN);
当您显示明细细分时,您也可以在discount
语句中使用相同的case
变量。
顺便说一句,当你在代码中表示开/关值时,你应该使用布尔值true
和false
。然后,您只需撰写options.OPTION_NAME
而不是options.OPTION_NAME == 'on'
。