2017-08-29 14 views
-2

ユーザーが送信ボタンをクリックする前に、2つのラジオグループの計算をリアルタイムで表示しようとしています。内部にif文があれば可能ですか?

<div class="container-5"> 
    <div class="choices1"> 
     <h1 class>Regular<br>Regular Choice</h1> 
     <input type="radio" id="thirteen" name="style" value="13.00"> 
    </div> 

    <div class="choices2"> 
     <h1>Popular<br>Popular Choice</h1> 
     <input type="radio" id="fifteen" name="style" value="15.00"> 
    </div> 

    <div class="choices3"> 
     <h1>Fancy<br>Fancy Choice<br>Literally.</h1> 
     <input type="radio" id="twenty" name="style" value="20.00"> 
    </div> 

    </div> 

<div class="container-8"> 
    <div class="gratuity1"> 
     <h1 class>15%<br>Good.</h1> 
     <input type="radio" id="15" name="tip" value=".15"> 
    </div> 

    <div class="gratuity2"> 
     <h1>20%<br>Excellent Service.</h1> 
     <input type="radio" id="20" name="tip" value=".20"> 
    </div> 

    <div class="gratuity3"> 
     <h1>25%<br>Beyond Excellent</h1> 
     <input type="radio" id="25" name="tip" value=".25"> 
    </div> 

    </div> 

私は純粋なjavascriptを使用しています。

これらのカテゴリのそれぞれは、選択したラジオボタンの値を表すと考えられます。 document.getElementById("fifteen").selected) {} and if (document.getElementById("twenty").selected {}

ためのステートメントは、私が正しい順序でこれを入れておりません場合は、両方のボタンを選択したかどうかをテストするためのステートメントとイベントは私も作成

var styleVal1= 3.0; 
    var styleVal2 = 5.0; 
    var styleVal3 = 10.0; 
    var tipVal1 = 0.1; 
    var tipVal2 = 0.15; 
    var tipVal3 = 0.2; 
    var total = 0.00; 

if (document.getElementById("thirteen").selected) { 
    document.getElementById("thirteen").addEventListener("click", function() { 
     total = styleVal1; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
    if (document.getElementById("15").selected) { 
    total += total * tipVal1; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
} else if (document.getElementById("20").selected) { 
    total += total * tipVal2; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
} else (document.getElementById("25").selected) { 
    total += total * tipVal3; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
     } 
    }); 
    }  

を発生する場合、私は私が作成した変数を定義したらか私は何かを欠いている? if文の中のelse if文を実行することも可能ですか?

+0

あなたはコードレビューを求めていますか?または何か動作していないのですか? –

+0

私はすべてがうまくいくと思うかもしれません。私はまだこれで新しいです。 – Lynn

答えて

0

あなたのJSコードは論理的に間違っています。この条件if (document.getElementById("thirteen").selected)は常にfalseを返し、イベントがラジオ要素にバインドされないため、すべてのclickイベントの

  1. まず、まだバインドされていません。

  2. elseは条件を指定できません。 else (document.getElementById("25").selected)これは間違っています。

私はあなたのコードを修正しましたが、あなたは残りの部分を修正するためにneeed、

document.getElementById("thirteen").addEventListener("click", function() { 
     total = styleVal1; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
     if (document.getElementById("15").selected) { 
     total += total * tipVal1; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
     } else if (document.getElementById("20").selected) { 
     total += total * tipVal2; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
     } else if (document.getElementById("25").selected) { //changed this to else-if 
     total += total * tipVal3; 
     document.getElementById("total").innerHTML = "Total:$ " + total; 
    } 
}); 
+0

私は理解しています。そのため、イベントリスナーは、関数のif/else-ifステートメント部分で作成する必要があります。これは、document.getElementById( "thirteen")が選択されている条件ではありません。ありがとうございました!誰かがjavascriptのロジックで私を助けるいくつかの素晴らしい本を持っていますか?具体的には関数とループ。 – Lynn

+0

MDNは学ぶのに最適な場所です。https://developer.mozilla.org/en-US/docs/Web/JavaScript –