2017-12-18 8 views
-1

私は初心者のコーダーで、私の人生では以下のラジオボタンの値を追加する方法を理解できません - どんな助けでも大歓迎です!Javascriptでラジオボタンの値を追加するには

糖尿病スクリーニング評価ツールを作成しようとしています。さまざまなリスク要因に異なる値を割り当てることができます。

+3

のため:あなたのラベルが正しく 'for'属性を使用していますが、どれもあなたの ''の正しいIDを使用してください! – Sidney

+0

'fma.js'ファイルに現在の作業が表示されている場合は、質問にコードを投稿してください。 –

+0

@Sidney - ユーザーがラジオボタンを選択したときに、javascriptを使用して対応する選択された値を追加したい。 の意味がわからないし、正しいIDを説明できますか?どうもありがとう! – Susan

答えて

0

これを達成するには、JavaScriptを使用する必要があります。

ここでそれを行うための一つの方法です:

  • がから値がデフォルト(フォームがサーバーに送信されないように)
  • グラブフォームのsubmitイベント
  • を防ぐために聞きます各フィールド。彼らは文字列
  • は(コンソールでは、この例では)結果を表示します
  • をそれらを追加できるでしょうので、フィールドは、各フィールドに使用parseInt
  • HTMLからname属性を使用

const form = document.querySelector('form') 
 

 
form.addEventListener('submit', event => { 
 
    event.preventDefault() 
 
    const total = 
 
    parseInt(form.age.value) + 
 
    parseInt(form.bmi.value) + 
 
    parseInt(form.famhistory.value) + 
 
    parseInt(form.diet.value) 
 
    console.log(total) 
 
})
<!doctype html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Zedland Health Authority's Diabetes health assessment tool</title> 
 
    <link rel="stylesheet" type="text/css" href="fma.css"> 
 
    <script src="fma.js"></script> 
 
</head> 
 

 
<body> 
 
    <h1 id="pageheading">Zedland Health Authority's Diabetes health assessment tool</h1> 
 
    <form id="register"> 
 
    <fieldset id="controls"> 
 
     <div> 
 
     <label class="button" for="Age">How old are you?</label> 
 
     <input type="radio" id="agerange" name="age" value="0" checked="checked"> 
 
     <label for="agerange1">1-25</label> 
 
     <input type="radio" id="agerange" name="age" value="5"> 
 
     <label for="agerange2">26-40</label> 
 
     <input type="radio" id="agerange" name="age" value="8"> 
 
     <label for="agerange3">40-60</label> 
 
     <input type="radio" id="agerange" name="age" value="10"> 
 
     <label for="agerange4">60+</label> 
 
     </div> 
 
     <div> 
 
     <label class="button" for="bmi">What is your BMI?</label> 
 
     <input type="radio" id="bmi" name="bmi" value="0" checked="checked"> 
 
     <label for="bmi1">0-25</label> 
 
     <input type="radio" id="bmi" name="bmi" value="0"> 
 
     <label for="bmi2">26-30</label> 
 
     <input type="radio" id="bmi" name="bmi" value="9"> 
 
     <label for="bmi3">31-35</label> 
 
     <input type="radio" id="bmi" name="bmi" value="10"> 
 
     <label for="bmi4">35+</label> 
 
     </div> 
 
     <div> 
 
     <label class="button" for="famhistory">Does anybody in your family have diabetes?</label> 
 
     <input type="radio" id="famhistory" name="famhistory" value="0" checked="checked"> 
 
     <label for="famhistory1">No</label> 
 
     <input type="radio" id="famhistory" name="famhistory" value="7"> 
 
     <label for="famhistory2">Grandparent</label> 
 
     <input type="radio" id="famhistory" name="famhistory" <label for="famhistory3">Sibling</label> 
 
     <input type="radio" id="famhistory" name="famhistory" value="15"> 
 
     <label for="famhistory4">Parent</label> 
 
     </div> 
 
     <div> 
 
     <label class="button" for="diet">How would you describe your diet?</label> 
 
     <input type="radio" id="diet" name="diet" value="0" checked="checked"> 
 
     <label for="diet1">Low sugar</label> 
 
     <input type="radio" id="diet" name="diet" value="7"> 
 
     <label for="diet2">Normal sugar</label> 
 
     <input type="radio" id="diet" name="diet" value="15"> 
 
     <label for="diet3">Quite high sugar</label> 
 
     <input type="radio" id="diet" name="diet" value="15"> 
 
     <label for="diet4">High sugar</label> 
 
     </div> 
 
    </fieldset> 
 
    <div> 
 
     <input type="submit" value="submit" id="submit"> 
 
    </div> 
 
    </form> 
 

 
</body> 
 

 
</html>

+0

これはうまくいきますが、私はオリジナルのHTMLにエラーがあることに気付きました.bmiは値0 ** 2回**を持っていますので、間違った結果を招くことになります。 –

0

あなたが値を追加することを計画している場合は、ここではより柔軟なアプローチがあります。

アイデアは、名前にかかわらず、関連する入力(フィールドセット内にIDがcontrolsであるもの)をループすることです。チェックを追加すると、同じコードが引き続き使用できます。

score変数を作成し、チェックされた各入力の値でその変数をインクリメントします。

は注意してください、あなたは値0 を持ってTWICE BMIチェック質問に関係のない

window.addEventListener('DOMContentLoaded', function() { 
 

 
    var form = document.querySelector('form'); 
 

 
    form.addEventListener('submit', function(event) { 
 
     event.preventDefault(); 
 

 
     var inputs = document.querySelectorAll('#controls input'); 
 
     var score = 0; 
 
     inputs.forEach(function(input) { 
 
      if (input.checked) { 
 
       score += parseInt(input.value, 10); 
 
      } 
 

 
     }); 
 
     console.log(score); 
 
    }); 
 

 
    });
<!doctype html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Zedland Health Authority's Diabetes health assessment tool</title> 
 
    <script> 
 

 

 

 
    </script> 
 
</head> 
 
<body> 
 
    <h1 id="pageheading">Zedland Health Authority's Diabetes health assessment tool</h1> 
 
    <form id="register"> 
 
    <fieldset id="controls"> 
 
     <div> 
 
      <label class="button" for="Age">How old are you?</label> 
 
      <input type="radio" id="agerange" name="age" value="0" checked="checked"> 
 

 
      <label for="agerange1">1-25</label> 
 
      <input type="radio" id="agerange" name="age" value="5"> 
 
      <label for="agerange2">26-40</label> 
 
      <input type="radio" id="agerange" name="age" value="8"> 
 
      <label for="agerange3">40-60</label> 
 
      <input type="radio" id="agerange" name="age" value="10"> 
 
      <label for="agerange4">60+</label> 
 
     </div> 
 
     <div> 
 
      <label class="button" for="bmi">What is your BMI?</label> 
 
      <input type="radio" id="bmi" name="bmi" value="0" checked="checked"> 
 

 
      <label for="bmi1">0-25</label> 
 
      <input type="radio" id="bmi" name="bmi" value="0"> 
 
      <label for="bmi2">26-30</label> 
 
      <input type="radio" id="bmi" name="bmi" value="9"> 
 
      <label for="bmi3">31-35</label> 
 
      <input type="radio" id="bmi" name="bmi" value="10"> 
 
      <label for="bmi4">35+</label> 
 
     </div> 
 
     <div> 
 
      <label class="button" for="famhistory">Does anybody in your family have diabetes?</label> 
 
      <input type="radio" id="famhistory" name="famhistory" value="0" checked="checked"> 
 
      <label for="famhistory1">No</label> 
 
      <input type="radio" id="famhistory" name="famhistory" value="7"> 
 
      <label for="famhistory2">Grandparent</label> 
 
      <input type="radio" id="famhistory" name="famhistory" 
 
      <label for="famhistory3">Sibling</label> 
 
      <input type="radio" id="famhistory" name="famhistory" value="15"> 
 
      <label for="famhistory4">Parent</label> 
 
     </div> 
 
     <div> 
 
      <label class="button" for="diet">How would you describe your diet?</label> 
 
      <input type="radio" id="diet" name="diet" value="0" checked="checked"> 
 
      <label for="diet1">Low sugar</label> 
 
      <input type="radio" id="diet" name="diet" value="7"> 
 
      <label for="diet2">Normal sugar</label> 
 
      <input type="radio" id="diet" name="diet" value="15"> 
 
      <label for="diet3">Quite high sugar</label> 
 
      <input type="radio" id="diet" name="diet" value="15"> 
 
      <label for="diet4">High sugar</label> 
 
     </div> 
 
    </fieldset> 
 
    <div> 
 
     <input type="submit" value="submit"> 
 
    </div> 
 
</form> 
 

 
</body> 
 
</html>

+0

コードはここでは動作しますが、角かっこでは動作しません。これはコード化するために使用しているものなので、なぜですか?上記のおかげでたくさんありました。 – Susan

+0

JavaScriptコードを '