• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
581 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 (289,990 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 (289,990 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 (289,990 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ź 594 wizyt
pytanie zadane 10 stycznia 2019 w PHP przez Próbny Nowicjusz (200 p.)
0 głosów
1 odpowiedź 244 wizyt
pytanie zadane 3 lutego 2020 w JavaScript przez szoopa Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 335 wizyt

93,187 zapytań

142,203 odpowiedzi

322,024 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2310p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 2048p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1701p. - Michał Telesz
  15. 1580p. - 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...