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

Niedziałający onclick w przycisku

0 głosów
766 wizyt
pytanie zadane 23 stycznia 2016 w JavaScript przez daze6 Nowicjusz (140 p.)
edycja 23 stycznia 2016 przez daze6

Witam,
próbuję stworzyć prosty quiz oparty na html/javascript, lecz napotykam na pewien błąd. Otóż, skrypt w ogóle się nie wykonuje i mam wrażenie, że z jakiegoś powodu nie działa onclick, którego użyłem. Jestem początkujący, jestem w trakcie oglądania kursu HTML i JS M. Zelenta. Siedzę już nad tym problemem kilka godzin i głowa mi niedługo pęknie. Proszę o poradę, jak się z tym uporać.

 

 

Fragment HTML'a:

<div id="content">
		<u><h3>QUIZ</h3></u>
		<p>Przed Tobą jest do rozwiązania krótki test sprawdzający wiedzę. Aby otrzymać pozytywną ocenę, musisz odpowiedzieć prawidłowo na przynajmniej 2 pytania.</p><br/><br/>
		
		<form>
			<p>1. Czy komputer Altair 8800 został opracowany wcześniej niż Atari 400?<br />
			<input type="radio" id="1" value="1">Tak
			<input type="radio" id="2" value="0">Nie
			<p>2. Czy komputer IBM 5150 posiadał dysk twardy?<br />
			<input type="radio" id="3" value="0">Tak
			<input type="radio" id="4" value="1">Nie
			<p>3. Czy IBM 5150 posiadął większą pamięć ROM niż Atari 400/800?<br />
			<input type="radio" id="5" value="1">Tak
			<input type="radio" id="6" value="0">Nie
			<br /><br />
			<button type="button" onclick="check()">Sprawdź odpowiedzi</button>
		</form>
</div>

 

skrypt JS:

function check(){
	var sum=0;
	for(int i=1; i<=6; i++){
		if(document.GetElementById("1").checked){
			var x = document.GetElementById("1").value;
			sum=+x;
		}
		if(document.GetElementById("2").checked){
			var x = document.GetElementById("2").value;
			sum=+x;
		}
		if(document.GetElementById("3").checked){
			var x = document.GetElementById("3").value;
			sum=+x;
		}
		if(document.GetElementById("4").checked){
			var x = document.GetElementById("4").value;
			sum=+x1
		}
		if(document.GetElementById("5").checked){
			var x = document.GetElementById("5").value;
			sum=+x;
		}
		if(document.GetElementById("6").checked){
			var x = document.GetElementById("6").value;
			sum=+x;
		}

}
if(sum>=2)
		alert("Udało Ci się. Twój wynik to "+sum+" poprawne odpowiedzi");
		else
		alert("Nie udało Ci się.");
}

 

1 odpowiedź

+2 głosów
odpowiedź 23 stycznia 2016 przez Arkadiusz Waluk Ekspert (291,270 p.)
document.getElementById

a nie

document.GetElementById

Oprócz tego jeszcze

sum=+x1

Co to ma niby robić? Pewnie zamiast tej 1 miał być ; ale to i tak nie zmienia faktu, że nie rozumiem co taki zapis ma zrobić. Przypisać do zmiennej sum wartość x na plusie? Może pomyliłeś z +=?

komentarz 23 stycznia 2016 przez daze6 Nowicjusz (140 p.)
Poprawiłem "gety" i tę jedynkę, ale dalej nic.

EDIT: Tak, chodziło o +=... Tyle razy już modyfikowałem ten kod w nerwach, że nawet tego nie zauważyłem... Dzięki, ale i tak dalej nie działa. Wg przeglądarki "check is undefined"
komentarz 23 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)

W pętli masz:

for (int i...

a powinno być for (var i...

komentarz 23 stycznia 2016 przez daze6 Nowicjusz (140 p.)
Jednak działa:-) Przynajmniej częściowo, bo wyszło na to, że pobieram po prostu "stringa" z wartości radio (1, 0) zamiast liczby, więc zamiast dostać sumę punktów, otrzymuję zlepiony ciąg znaków :P
komentarz 23 stycznia 2016 przez Arkadiusz Waluk Ekspert (291,270 p.)
parseInt(string) - zamiana na liczby całkowite

parseFloat(string) - zamiana na liczy rzeczywiste
komentarz 23 stycznia 2016 przez daze6 Nowicjusz (140 p.)

parseInt załatwił sprawę, ale w trakcie wyszedł jeszcze jeden (i chyba ostatni) problem: otóż, mogę zaznaczyć wszystkie input radia

 


Jakieś pomysły, Panowie Dobrodzieje?

komentarz 23 stycznia 2016 przez Arkadiusz Waluk Ekspert (291,270 p.)
Radioboxy spośród których ma być zaznaczona tylko jedna odpowiedź muszą mieć taki sam name - u Ciebie wcale nie mają atrybutu name, musisz dodać.
komentarz 23 stycznia 2016 przez daze6 Nowicjusz (140 p.)

Wyskakiwał mi jeszcze zły wynik sumy i okazało się, że to przez zupełnie zbędną pętlę for, która została w kodzie po poprzedniej wersji... W każdym razie, teraz wszystko działa. Wielkie dzięki za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 858 wizyt
pytanie zadane 10 stycznia 2019 w PHP przez Próbny Nowicjusz (200 p.)
0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 3 lutego 2020 w JavaScript przez szoopa Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 459 wizyt

93,630 zapytań

142,554 odpowiedzi

323,055 komentarzy

63,136 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2153p. - DziarnowskiJ
  3. 2123p. - Łukasz Piwowar
  4. 2077p. - raydeal
  5. 1989p. - CC PL
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1895p. - rucin93
  9. 1887p. - Łukasz Eckert
  10. 1855p. - Michal Drewniak
  11. 1811p. - rafalszastok
  12. 1777p. - robwarsz
  13. 1588p. - Tomasz Bielak
  14. 1491p. - Rafał Trójniak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...