2017-03-27 21 views
0

変数vTotalPaymentは機能しません。これは、私が何を間違えているのか分からないにもかかわらず、私がどのように機能を呼び出すかによると考えています。私はこれもswitch文の悪用の可能性があることを認識しています。機能が実行されていないか正しく呼び出されていません

function begin() { 
 
    var vTicketType = prompt('Please enter the type of ticket'); 
 
    var vTicketQty = Number(prompt('Please enter amount required')); 
 

 
    document.write('Ticket Type: ' + vTicketType + '<br />'); 
 
    document.write('Ticket Qty: ' + vTicketQty + '<br />'); 
 

 
    var vTicketPrice = calcPrice(vTicketType); 
 
    var vTotalPayment = calcTotal(vTicketQty, vTicketPrice); 
 

 
    document.write('Total Payment: ' + vTotalPayment); 
 

 
} 
 
begin(); 
 

 
function calcPrice(Prices) { 
 
    var Price = 0; 
 
    switch (vTicketType) { 
 
    case 'A': 
 
     Price = 100; 
 
     break; 
 
    case 'B': 
 
     Price = 75; 
 
     break; 
 
    case 'C': 
 
     Price = 50; 
 
     break; 
 
    default: 
 
     Price = -1; 
 
    } 
 
    return (Price); 
 
} 
 

 

 
function calcTotal(Payments) { 
 
    var Payment = (vTicketQty * vTicketPrice); 
 
    return (Payment); 
 
}

+0

を返すとき、あなたは()括弧は必要ありません。それは間違っているかもしれません。 vTicketQtyとvTicketPriceの両方をパラメータとして使用する必要があります。それを試してください。このように....関数calcTotal(vTicketQty、vTicketPrice){ var Payment =(vTicketQty * vTicketPrice); 返品(お支払い); } –

+0

そのため、あなたは、関数calcPriceのよう を使用している変数を宣言していなかった:あなたはvTicketType'文の代わりに、価格 、あなたは未定義の変数を使用しているにも機能的に 'calcTotal'を切り替えるために、'渡しています。 – psycho

+0

スイッチの代わりにこれを試すことができます。 [JSFiddle](https://jsfiddle.net/gzfyzy4h/)。これは最適化に注意してください。以下の答えは問題の実際の理由を指摘している – Rajesh

答えて

1

あなただけcalcTotalを機能させる一つの引数を渡すともそれを使用していません。あなたのcalcTotalを以下のコードに置き換え、まだ動作していない場合はコメントでお知らせください。

function calcTotal(vTicketQty, vTicketPrice) { 
    return (vTicketQty * vTicketPrice); 
} 
0

メソッドのパラメータが間違っています。パラメーターの数や間違った名前。

代わりのcalcPrice(Prices)私はそれはそれはおそらくあなたは、次の操作を行うことができcalcTotal(vTicketQty, vTicketPrice)

function begin() { 
 
    var vTicketType = prompt('Please enter the type of ticket'); 
 
    var vTicketQty = Number(prompt('Please enter amount required')); 
 

 
    document.write('Ticket Type: ' + vTicketType + '<br />'); 
 
    document.write('Ticket Qty: ' + vTicketQty + '<br />'); 
 

 
    var vTicketPrice = calcPrice(vTicketType); 
 
    var vTotalPayment = calcTotal(vTicketQty, vTicketPrice); 
 

 
    document.write('Total Payment: ' + vTotalPayment); 
 

 
} 
 
begin(); 
 

 
function calcPrice(vTicketType) { 
 
    var Price = 0; 
 
    switch (vTicketType) { 
 
     case 'A': 
 
      Price = 100; 
 
      break; 
 
     case 'B': 
 
      Price = 75; 
 
      break; 
 
     case 'C': 
 
      Price = 50; 
 
      break; 
 
     default: 
 
      Price = -1; 
 
    } 
 
    return (Price); 
 
} 
 

 

 
function calcTotal(vTicketQty, vTicketPrice) { 
 
    var Payment = (vTicketQty * vTicketPrice); 
 
    return (Payment); 
 
}

0

あるべきcalcPrice(vTicketType)、代わりのcalcTotal(Payments)されるべきだと思う:

(function begin() { 
 
    var vTicketType = prompt('Please enter the type of ticket'); 
 
    var vTicketQty = Number(prompt('Please enter amount required')); 
 

 
    document.write('Ticket Type: ' + vTicketType + '<br />'); 
 
    document.write('Ticket Qty: ' + vTicketQty + '<br />'); 
 

 
    var vTicketPrice = calcPrice(vTicketType); 
 
    var vTotalPayment = calcTotal(vTicketQty, vTicketPrice); 
 

 
    document.write('Total Payment: ' + vTotalPayment); 
 

 
})(); 
 

 
function calcPrice(vTicketType) { 
 
    var Price = 0; 
 
    switch (vTicketType) { 
 
     case 'A': 
 
      Price = 100; 
 
      break; 
 
     case 'B': 
 
      Price = 75; 
 
      break; 
 
     case 'C': 
 
      Price = 50; 
 
      break; 
 
     default: 
 
      Price = -1; 
 
    } 
 
    return Price; 
 
} 
 

 

 
function calcTotal(vTicketQty, vTicketPrice) { 
 
    var Payment = (vTicketQty * vTicketPrice); 
 
    return Payment; 
 
}
ベストプラクティスについては

あなたは、あなたが2つのパラメータを使用している関数を呼び出しているが、あなたの関数定義であなただけの1つのパラメータを持っている場合は、あなたが支払いを返すか、価格

関連する問題