あなたの主な問題は、常に変数を再定義しており、場合によっては意図したスコープを殺していることです。変数を一度作成したらvar
、二度とそれをしないでください。たとえば、次のものがあります。
if (total<40)
{
var cost = parseInt(total) * 1.95;
}
else
{
var cost = parseInt(total) * 1.65;
}
var fare = cost;
ここでの問題は、コストを再定義しているため、if/else ブロック内にスコープがあることです。次に、割り当てcost
てfare
いるときは、実際にはfare
undefined に設定しているだけです。これは、if ブロックの外では見えないためです。試す:
/* code to get check box that indicates prices for 1.50 and 1.60 */
var check150 = document.getElementById("yourCheckIdFor150").checked ? true : false;
var check160 = document.getElementById("yourCheckIdFor160").checked ? true : false;
var cost = parseInt(total) * 1.65;
if(total < 40 && !check150 && !check160)
{
cost = parseInt(total) * 1.95;
}else if(check150 && !check160)
{
cost = parseInt(total) * 1.50;
}else if(!check150 && check160)
{
cost = parseInt(total) * 1.60;
}
var fare = cost;
fare = Math.round(fare*100)/100;
if(document.getElementById("doubleFare").checked)
{
fare = fare * 2;
}
さまざまな値で価格を表示したい場合は、運賃と初期費用に個別の変数を使用し、else if
ブロックを分割する必要がありif(check160)
ます。一度に 1 つのオプションのみを表示する場合は、上記が機能します。