2016-09-19 13 views
0

私たちは、コードを編集する助けが必要な既存のカーペットクリーニングエリアの電卓を持っています。Javascript ifとswitch文

MOVE_FURNITURE_NOまたはMOVE_FURNITURE_EMPTYがチェックされている場合、計算機は現在作動しています。清掃する価格は20%割り引かれます。ファイバープロテクター、スコッチガード、またはデコンがチェックされている場合は、1平方フィートあたりの料金が$ 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 

は、今、私たちは「MOVE_FURNITURE_NO」がチェックされているときにのために更新しようとしており1、任意の、またはディーコンの全て、 FIBER PROTECTOR、SCOTCHGARDのいずれかがチェックされている場合は、20%オフにする必要があります。

しかし...

「MOVE_FURNITURE_EMPTY」にチェックされ

と1、任意の、またはディーコン、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); 

私はこのコードを試みたが、計算は条件付きで一緒にしていない3つのすべてを追加している:の価格崩壊部で

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

これはSQLと何が関係していますか?それはすべてのJavascriptです。 – Barmar

答えて

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); 

あなたが項目別の内訳を表示しているときには、同様にcase文で同じdiscount変数を使用することができます。

ところで、コードのオン/オフ値を表すときは、ブール値truefalseを使用する必要があります。次に、options.OPTION_NAME == 'on'の代わりにoptions.OPTION_NAMEと書くことができます。

+0

ありがとう、私はこれを試してみます。コード/電卓はすでに数年前と同じように設定されていましたが、現在は必要なものにコードを修正する必要があります。私は将来あなたが何かを作成するときにあなたが念頭に置いておいた提案を間違いなく保持します。 – lse