• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przechwycenie danych z formularza input type=radio za pomocą pętli

Object Storage Arubacloud
+1 głos
600 wizyt
pytanie zadane 10 sierpnia 2021 w JavaScript przez El Lirón Obywatel (1,320 p.)

Cześć! Chciałbym pobierać informację, która opcja została wybrana przez użytkownika. Podaję fragmenty html:
 

<section class="quiz">
				<progress class="quiz__progress" value="0" max="5"></progress>
				<form action="" class="quiz__question">
					<p class="quiz__text"></p>
					<div class="quiz__answer-list">
						<div class="quiz__answer-item">
							<input type="radio" value="A" id="answerOne" name="answer" class="quiz__answer answerA">
							<label for="answerOne" class="quiz__answer answer-one-label"></label>
						</div>
						<div class="quiz__answer-item">
							<input type="radio" value="B" id="answerTwo" name="answer" class="quiz__answer answerB">	
							<label for="answerTwo" class="quiz__answer answer-two-label"></label>
						</div>
						<div class="quiz__answer-item">
							<input type="radio" value="C" id="answerThree" name="answer" class="quiz__answer answerC">
							<label for="answerThree" class="quiz__answer answer-three-label"></label>
						</div>
					</div>
				</form>
				<button class="button accept">Zatwierdź</button>
				<button class="button ignore">Pomiń</button>
				<button class="button summary">Zatwierdź i zakończ</button>
				<button class="button ignore-last">Pomiń i zakończ</button>
				
			</section>

i kodu js:

 

/* elementy pytania - input*/
const answerInputA = document.querySelector(".answerA");
const answerInputB = document.querySelector(".answerB");
const answerInputC = document.querySelector(".answerC");
let answerList = [answerInputA, answerInputB, answerInputC];


let currentAnswer = "";


/* pobiera wybrane odpowiedzi i je zapisuje w zmiennej getAnswer */
const getAnswerFromUser = () => {
    for (answer of answerList)
        {
        if (answer.checked) {
            currentAnswer = answer.value;}
        else {
            currentAnswer = "Z";}
        };
};

Program zachowuje się tak, że niezależnie jaką opcję wybiorę, to w zmiennej currentAnswer ląduje string "Z".

Czy ja robię błąd w pętli, czy źle pobieram dane? Czy coś przeoczyłem? Spójrzcie proszę, bo cudze oczy zobaczą to, czego własne nie widzą ;)

Thank You from the mountain ;)

1 odpowiedź

+3 głosów
odpowiedź 10 sierpnia 2021 przez niezalogowany
wybrane 16 sierpnia 2021 przez El Lirón
 
Najlepsza

W momencie znalezienia zaznaczonej opcji musisz przerwać wykonywanie dalej pętli. na przykłąd w ifie dodać linijkę

break;

Do pobrania wartości z radio inputa istnieje sprytny trick z wykorzystaniem CSS-a

const currentAnswer = document.querySelector('input[name=answer]:checked').value
1
komentarz 10 sierpnia 2021 przez El Lirón Obywatel (1,320 p.)
Dzięki! Dodałem break; i zadziałało! Teraz patrzę, że to taki prosty błąd był i sam się z siebie śmieję ;) Sprawdzę sobie ten trick także. Z serca dziękuję!

Podobne pytania

0 głosów
1 odpowiedź 1,319 wizyt
pytanie zadane 1 maja 2018 w PHP przez Damian Prymus Początkujący (380 p.)
0 głosów
1 odpowiedź 549 wizyt
pytanie zadane 3 grudnia 2019 w HTML i CSS przez Kolberg Obywatel (1,560 p.)
0 głosów
1 odpowiedź 1,461 wizyt

92,578 zapytań

141,426 odpowiedzi

319,653 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...