Eoghan Ahern
Eoghan Ahern

Reputation: 25

How to sort out this radio button?

How do I get the radio button to carry out the conversion once it's checked? This is the HTML I have written but it is not getting picked up by the JavaScript.

<form class="conversions" id="convert">

    <input type='number' placeholder='Enter the Tempeture' id='celsius' />
    </p>
    <input type='number' placeholder='Result' id='fahrenheit' disabled /></p>
    <div id="answer"></div>
    <input type="radio" value="celsius" name="cel" id="C2f" > <label for="r-    method-pickup">celsius to fahrenheit</label><br>
    <input type="radio" value="fahrenheite" name="cel" id="f2C" > <label for="r-method-pickup">fahrenheit to celsius</label><br>
    <input type='button' id='converButton' value='convert' />

And the JavaScript is... I realize I am missing code but I just don't know what as it keeps giving me errors in calling the element?

var methods = document.getElementById('convert').cel;

for (var i = 0; i < methods.length; i++){  

    if (methods[i].checked == true) {

        alert(methods[i].value); // this alert shows that it works when I have the radio button prechecked but when it is not prechecked in the html, nothing happens .

    }
}

//temperature conversion                //I need the buttons to link to the conversions below?
function celc() {
    far.value = (1.8 * cel.value) + 32;
    var answer = document.getElementById('answer');
}
function farin() {
    far.value = (cel.value - 32) / 1.8;
    var answer = document.getElementById('answer');
}

Upvotes: 0

Views: 1473

Answers (3)

Alaksandar Jesus Gene
Alaksandar Jesus Gene

Reputation: 6887

Here is the jsFiddle option the utilized the button convert.

    function convert(){

    var ctof = document.getElementById("C2f");
    var ftoc = document.getElementById("f2C");
     var temperature = document.getElementById("temperature");
    var unit = document.getElementById("unit");
    var convunit = document.getElementById("convunit");
    var convertedtemperature = document.getElementById("convertedtemperature");

   if(ctof.checked)

   {
       convertedtemperature.value=(1.8*temperature.value)+32;
       unit.innerHTML="Celcius";
       convunit.innerHTML="Franheit";
   }

   else if(ftoc.checked)

   {
       convertedtemperature.value=(temperature.value-32)/1.8;
        convunit.innerHTML="Celcius";
       unit.innerHTML="Franheit";
   }

    else

   {
       alert ("Please select the conversion type");
   }

}

Upvotes: 1

blurfus
blurfus

Reputation: 14031

You can add a click event to your button... something like:

function convert() {
  var radioOptions = document.getElementsByName("cel");
  var radioSelection;
  var i;

  for (i = 0; i < radioOptions.length; i++) {
    if (radioOptions[i].type === "radio" && radioOptions[i].checked === true) {
      radioSelection = radioOptions[i].value;
    }
  }

  if (radioSelection === 'celsius') {
    celc();
  } else if (radioSelection === 'fahrenheite') {
    farin();
  }
}

//temperature conversion                //I need the buttons to link to the conversions below?
function celc() {
  var origTemp = document.getElementById('temp').value;
  var farTemp = (1.8 * origTemp) + 32;
  document.getElementById('answer').innerHTML = farTemp;
}

function farin() {
  var origTemp = document.getElementById('temp').value;
  var celTemp = (origTemp - 32) / 1.8
  document.getElementById('answer').innerHTML = celTemp;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="conversions" id="convert">

  <input type='number' placeholder='Enter the Tempeture' id='temp' />--->
  <span id="answer"></span>
  <hr/>
  <input type="radio" value="celsius" name="cel" id="C2f">
  <label for="r-method-pickup">celsius to fahrenheit</label>
  <br/>

  <input type="radio" value="fahrenheite" name="cel" id="f2C">
  <label for="r-method-pickup">fahrenheit to celsius</label>
  <br/>
  <input type='button' id='converButton' value='convert' onclick="convert()" />
</form>

Upvotes: 0

Lal
Lal

Reputation: 14810

See the fiddle

I've made many changes in your javascript.See below for the changed javascript

var radios = document.getElementsByTagName('input');
var value;
var option;

function check() {
    for (var i = 0; i < radios.length; i++) {
        if (radios[i].type === 'radio' && radios[i].checked) {
            // get value, set checked flag or do whatever you need to
            option = radios[i].value;
        }
    }
    value = document.getElementById('degree').value;
    if (option == "celsius") {
        celc();
    } else if (option == "fahrenheite") {
        farin();
    }
}

//temperature conversion                //I need the buttons to link to the conversions below?
function celc() {
    value = (1.8 * value) + 32;
    document.getElementById('result').value = value;
}

function farin() {
    value = (value - 32) / 1.8;
    document.getElementById('result').value = value;
}

Also, I've added an onClick() attribute to your RadioButtons like

<input type="radio" value="celsius" name="cel" id="C2f" onChange="check()">
<input type="radio" value="fahrenheite" name="cel" id="f2C" onChange="check()">

where, check() is a javascript function.

Upvotes: 0

Related Questions