2017-03-30 6 views
0

ユーザーが数値以外の値を入力した場合にvticketqtyを0に設定する関数を追加したいとします。私はいくつかのことを試しましたが、コードを正しく動作させることはできません。関数を追加すれば、私は明らかに何か間違っています。Javascript - 関数の挿入に問題がある

これは私が使っていた機能です。

function NaN(){ 
    if (isNaN(TicketQty)) TicketQty = 0; 
    } else { 
    return TicketQty 
} 

しかしその正しいかどうかはわからない、と私は、関数がコード内に配置されなければならない場所を完全にはよく分かりません。これは私のJavaScriptコードです。どんな助けもありがとう。これに代えて

var vTicketType; 
var vTicketQty; 
var vTicketPrice; 
function calcTotal() { 
    vTicketType = prompt("Enter Ticket Type").toUpperCase(); 
    document.write("<br>"); 
    vTicketQty = prompt("Enter No. of Tickets"); 
    calcPrice(); 
    vTicketQty = parseInt(vTicketQty); 
    document.write("<br>"); 
    document.write("Type of Ticket:" + vTicketType); 
    document.write("<br>"); 
    document.write("Number of Tickets:" + vTicketQty); 
    document.write("<br>"); 
    var vTotalPayment =(vTicketPrice) * (vTicketQty); 
    if (vTotalPayment >0) { 
     document.write("Total Payment is: $" + vTotalPayment); 
     vTicketPrice = parseInt(vTicketPrice); 
    } else { 
     document.write("INVALID") 
    } 
} 



function calcPrice(){ 
    if (vTicketType == 'A') { 
     vTicketPrice = 50; 
    } else if (vTicketType == 'B') { 
     vTicketPrice = 30; 
    } else if (vTicketType == 'C'){ 
     vTicketPrice = 10; 
    } 
    else { 
     vTicketPrice = -1; 
    } 
} 
+0

'document.writeを使用しないでください()'そのコードでページがロードされた後に実行されます。あなたのページを一掃します。 – Barmar

+0

グローバル変数を使用せず、関数の引数と戻り値を使用します。 – Barmar

答えて

0

document.write("<br>"); 
vTicketQty = prompt("Enter No. of Tickets"); 
calcPrice(); 
vTicketQty = parseInt(vTicketQty); 
document.write("<br>"); 

これを試してみてください。

document.write("<br>"); 
while (isNaN(vTicketQty)) { 
    vTicketQty = prompt("Enter No. of Tickets"); 
    calcPrice(); 
    vTicketQty = parseInt(vTicketQty); 
    if (isNaN(vTicketQty)) { 
     alert("Quantity must be a number"); 
    } 
} 
document.write("<br>"); 

EDIT - 要求されたよう。

document.write("<br>"); 
vTicketQty = prompt("Enter No. of Tickets"); 
calcPrice(); 
vTicketQty = parseInt(vTicketQty); 
if (isNaN(vTicketQty)) { 
    vTicketQty = 0; 
} 
document.write("<br>"); 

EDITED -

1のような、より機能)

document.write("<br>"); 
calcPrice(); 
vTicketQty = getQty(); 
document.write("<br>"); 

function getQty() { 
    qty = parseInt(prompt("Enter No. of Tickets")); 
    if (isNaN(qty)) { 
     return 0; 
    } 
    return qty; 
} 

2)

document.write("<br>"); 
vTicketQty = prompt("Enter No. of Tickets"); 
calcPrice(); 
vTicketQty = checkNaN(parseInt(vTicketQty)); 
document.write("<br>"); 


function checkNaN(qty) { 
    if (isNaN(qty)) { 
     return 0; 
    } 
    return qty; 
} 
+0

ありがとう、これは動作しますが、プロンプトではなくループに設定するのではなく、ticketqtyを0に設定します。これを行う簡単な方法はありますか? – Mithrandir

+0

投稿を編集しました。両方の解決策を持つようにします。あなたが必要とするソリューションと、同様の問題を抱えている場合に他の人が好むオリジナルのソリューションです。 – noyanc

+0

ありがとう、それを機能させる方法はありますか? – Mithrandir

関連する問題