• 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

Object Storage Arubacloud
0 głosów
390 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 (287,950 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 (287,950 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 (287,950 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ź 482 wizyt
pytanie zadane 10 stycznia 2019 w PHP przez Próbny Nowicjusz (200 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 3 lutego 2020 w JavaScript przez szoopa Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 292 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 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!

...