получить значение радиоприемника

#javascript #html #jquery #radio-button

#язык JavaScript #HTML #jquery #радиокнопка

Вопрос:

мне удалось получить значение радиоприемника, но проблема в том, что когда я нажимаю общий радиоприемник, я получаю значение частного радиоприемника. что я делаю не так, пожалуйста, нужна помощь

 var radio = document.getElementsByName('occupancy');  var occupancy = ''  for(var i=0;ilt; radio.length; i  ) {  if(radio[i].checked)  occupancy = radio[i].value;  }  

это та часть, которая создает проблему

 (function() {  var stripe = Stripe('pk_test_51JWkHLK7X12cK8Ptf5y5DQn6Ugf6miu3AqSuhH9wdLsyTB9ouf0TY31vDQxq19xIt6YH76uMTEX1kU9HMyrcEb6w00MTxHnGxc');    var cause = document.getElementById('cause');  var amount = document.getElementById('amount');  var currency = document.getElementById('currency');  var datepicker = document.getElementById('datepicker');  var adults = document.getElementById('adults');  var children = document.getElementById('children');  var radio = document.getElementsByName('occupancy');  var occupancy = ''  for(var i=0;ilt; radio.length; i  ) {  if(radio[i].checked)  occupancy = radio[i].value;  }  var btn = document.getElementById('btn');    btn.addEventListener('click', async (e) =gt; {  e.preventDefault();  fetch('/checkout_sessions', {  method: 'POST',  headers: {  'Content-Type': 'application/json',  },  body: JSON.stringify({  cause: cause.value,  datepicker: datepicker.value,  adults: adults.value,  children: children.value,  currency: currency.value,  occupancy: occupancy,  amount: parseInt(amount.value * 100, 10),  }),  })  .then((response) =gt; response.json())  .then((session) =gt; {  stripe.redirectToCheckout({ sessionId: session.id });  })  .catch((error) =gt; {  console.error('Error:', error);  });  });  })();  
 lt;!doctype htmlgt; lt;html lang="en"gt;  lt;headgt;  lt;titlegt;Titlelt;/titlegt;  lt;!-- Required meta tags --gt;  lt;meta charset="utf-8"gt;  lt;meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"gt;  lt;/headgt;  lt;bodygt;  lt;section class="container sproduct my-5 pt-5"gt;  lt;div class="col-lg-6 col-md-12 col-12"gt;  lt;h6 style="padding-top: 20px;"gt;Home / Morning Safarilt;/h6gt;  lt;pgt;lt;input type="text" id="datepicker" style="width: 120px;" autocomplete="off" placeholder="Date" readonly/gt;lt;/pgt;  lt;div class="counter1"gt;  lt;Label class="Adults"gt;Adultslt;/Labelgt;  lt;div class='down' onclick='decreaseCount(event, this)'gt;-lt;/divgt;  lt;input id="adults" type='text' value='1' readonlygt;  lt;div class='up' onclick='increaseCount(event, this)'gt; lt;/divgt;  lt;/divgt;  lt;div class="counter2"gt;  lt;Label class="Children"gt;Childrenlt;/Labelgt;  lt;div class='down' onclick='decreaseCount2(event, this)'gt;-lt;/divgt;  lt;input id="children" type='text' value='0' readonlygt;  lt;div class='up' onclick='increaseCount(event, this)'gt; lt;/divgt;  lt;/divgt;  lt;div style="display: flex; width: 100%"gt;  lt;input type="radio" name="occupancy" id="private" value="private" checked="checked" onclick="updateTotal()"gt;  lt;label for="private" style="width: 74px;"gt;Privatelt;/labelgt;  lt;input type="radio" name="occupancy" id="shared" value="shared" onclick="updateTotal()"gt;  lt;label for="shared" style="width: 74px;"gt;Sharedlt;/labelgt;  lt;/divgt;      lt;div class="field"gt;  lt;button type="submit" id="btn"gt;Donatelt;/buttongt;  lt;/divgt;    lt;/divgt;  lt;/divgt;  lt;/sectiongt;  lt;/bodygt; lt;/htmlgt; 

мне удалось получить значение радиоприемника, но проблема в том, что когда я нажимаю общий радиоприемник, я получаю значение частного радиоприемника. что я делаю не так, пожалуйста, нужна помощь

 var radio = document.getElementsByName('occupancy');  var occupancy = ''  for(var i=0;ilt; radio.length; i  ) {  if(radio[i].checked)  occupancy = radio[i].value;  }  

это та часть, которая создает проблему

Комментарии:

1. Это работает для меня, когда я помещаю это в фрагмент. Однако вот более короткий способ получить это значение: let occupancy = document.querySelector('input[name=occupancy]:checked')?.value || '';