• 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

VPS Starter Arubacloud
+1 głos
718 wizyt
pytanie zadane 10 sierpnia 2021 w JavaScript przez El Lirón Obywatel (1,350 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,350 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,415 wizyt
pytanie zadane 1 maja 2018 w PHP przez Damian Prymus Początkujący (380 p.)
0 głosów
1 odpowiedź 659 wizyt
pytanie zadane 3 grudnia 2019 w HTML i CSS przez Kolberg Obywatel (1,560 p.)
0 głosów
1 odpowiedź 1,659 wizyt

93,015 zapytań

141,978 odpowiedzi

321,271 komentarzy

62,358 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...