-1

Web サイトの一部に JavaScript を使用しています。

var fare = Math.round(fare*100)/100;
if(document.getElementById("doubleFare").checked)
{
   fare = fare * 2;
}

しかし、スクリプトでこれを 3 回使用すると、3 つのうちの 1 つが機能しなくなります。

他の 2 回は、* の代わりに + を使用します。

誰がそれを解決するのを手伝ってくれますか? ありがとう

4

1 に答える 1

1

あなたの主な問題は、常に変数を再定義しており、場合によっては意図したスコープを殺していることです。変数を一度作成したらvar、二度とそれをしないでください。たとえば、次のものがあります。

 if (total<40)
 {
     var cost = parseInt(total) * 1.95;
 }
  else
 {
    var cost = parseInt(total) * 1.65;
 }
 var fare = cost;

ここでの問題は、コストを再定義しているため、if/else ブロック内にスコープがあることです。次に、割り当てcostfareいるときは、実際にはfareundefined に設定しているだけです。これは、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 つのオプションのみを表示する場合は、上記が機能します。

于 2013-06-25T20:02:34.713 に答える