Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: quiz w javascript
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Kamil9477
Witam, mam problem ze skryptem sprawdzającym ilość poprawnych odpowiedzi w quizie.
Napisałem jakiś skrypt (jestem zielony jeśli chodzi o JS), lecz nawet jak zaznaczę jakieś poprawne odpowiedzi to i tak wyskakuję alert że zaznaczyłem 0/10 poprawnych. Proszę o pomoc.

Kod
<script language="javascript" type="text/javascript">
function weryfikuj()
{

var punkty = 0;
var pop1=document.getElementsByName("poprawna");
var pop2=document.getElementsByName("poprawna2");
var pop3=document.getElementsByName("poprawna3");
var pop4=document.getElementsByName("poprawna4");
var pop5=document.getElementsByName("poprawna5");
var pop6=document.getElementsByName("poprawna6");
var pop7=document.getElementsByName("poprawna7");
var pop8=document.getElementsByName("poprawna8");
var pop9=document.getElementsByName("poprawna9");
var pop10=document.getElementsByName("poprawna10");

if (pop1.checked )
{
punkty = punkty+1;
}
if (pop2.checked)
{
punkty = punkty+1;
}
if (pop3.checked)
{
punkty = punkty+1;
}
if (pop4.checked )
{
punkty = punkty+1;
}
if (pop5.checked )
{
punkty = punkty+1;
}
if (pop6.checked )
{
punkty = punkty+1;
}
if (pop7.checked )
{
punkty = punkty+1;
}
if (pop8.checked )
{
punkty = punkty+1;
}
if (pop9.checked )
{
punkty = punkty+1;
}
if (pop10.checked )
{
punkty = punkty+1;
}
alert ("Udzieliłeś " +punkty+ "/10  poprawnych odpowiedzi");
}

</script>


wklejam także formularz:
Kod
<form>
<p class="quiz"> Pyt. 1 Który kraj jest największy na świecie? <br>
<input type="radio" name="poprawna"> Rosja <br>
<input type="radio"> Chiny <br>
<input type="radio"> Stany Zjednoczone <br>
<input type="radio"> Brazylia <br> </p>
<hr>
<p class="quiz"> Pyt. 2 Częścią jakiego kraju jest Alaska? <br>
<input type="radio"> Rosji <br>
<input type="radio"> Kanady <br>
<input type="radio" name="poprawna2"> Stanów Zjednoczonych <br>
<input type="radio"> Meksyku <br> </p>
<hr>
<br>
<center><img src="waw.jpg" alt="obrazek"></center> <br>
<p class="quiz"> Pyt. 3 Co przedstawia powyższy obrazek? <br>
<input type="radio" name="poprawna3"> Wawel w Krakowie <br>
<input type="radio"> Zamek krzyżacki w Malborku <br>
<input type="radio"> Zamek Książ <br>
<input type="radio"> Zamek Królewski w Warszawie <br> </p>
<hr>
<p class="quiz"> Pyt. 4 Jakie jest najgłębsze jezioro w Polsce? <br>
<input type="radio"> Mamry <br>
<input type="radio" name="poprawna4"> Hańcza <br>
<input type="radio"> Gopło <br>
<input type="radio"> Śniardwy <br> </p>
<hr>
<p class="quiz"> Pyt. 5 Jakie miasto jest stolicą Francji? <br>
<input type="radio"> Lyon <br>
<input type="radio"> Marsylia <br>
<input type="radio"> Bordeaux <br>
<input type="radio" name="poprawna5"> Paryż <br> </p>
<hr>
<p class="quiz"> Pyt 6. Jak nazywa się najdalej na południe wysunięty punkt Afryki ? <br>
<input type="radio" name="poprawna6">Przylądek Igielny<br>
<input type="radio">Przylądek Dobrej Nadziei<br>
<input type="radio">Przylądek Horn<br>
<input type="radio">Przylądek Rocca<br> </p>
<hr>
<p class="quiz"> Pyt 7. Które państwo sąsiaduje z Polską? <br>
<input type="radio" name="poprawna7">Niemcy <br>
<input type="radio"> Hiszpania<br>
<input type="radio"> Francja <br>
<input type="radio"> Włochy <br> </p>
<hr>
<p class="quiz"> Pyt 8. Które miasto leży w województwie Lódzkim? <br>
<input type="radio"> Radom<br>
<input type="radio" name="poprawna8"> Radomsko <br>
<input type="radio"> Ełk <br>
<input type="radio"> Sanok <br> </p>
<hr>
<p class="quiz"> Pyt 9. Najgłebsze jezioro na świecie to? <br>
<input type="radio"> Tanganika <br>
<input type="radio"> Wielkie Jezioro Niedźwiedzie <br>
<input type="radio" name="poprawna9"> Bajkał <br>
<input type="radio"> Onega <br> </p>
<hr>
<p class="quiz"> Pyt 10. Najdłuższa rzeka w Europie to? <br>
<input type="radio"> Wisła <br>
<input type="radio"> Ren <br>
<input type="radio"> Loara <br>
<input type="radio" name="poprawna10"> Wołga <br> </p>
<input type="submit" value="sprawdz!" onclick="weryfikuj()">
</form>

nospor
Zacznij od podstaw HTML:
wszystkie radio w grupie muszą mieć takie samo NAME, a nie ty NAME nadajesz tylko jednemu radio z grupy

Oraz kolejna sprawa: nadanie NAME dla radio nie sluzy okresleniu czy to radio jest poprawne czy nie
Kamil9477
Wzorowałem się na innym formularzu z jakiegoś forum, rozumiem że określeniu czy jest pole radio poprawne czy nie służy VALUE?

Teraz jest dobrze?

Kod
<form>
<p class="quiz"> Pyt. 1 Który kraj jest największy na świecie? <br>
<input type="radio" name="quiz" value="1"> Rosja <br>
<input type="radio" name="quiz" value="0"> Chiny <br>
<input type="radio" name="quiz" value="0"> Stany Zjednoczone <br>
<input type="radio" name="quiz" value="0"> Brazylia <br> </p>
<hr>
<p class="quiz"> Pyt. 2 Częścią jakiego kraju jest Alaska? <br>
<input type="radio" name="quiz1" value="0"> Rosji <br>
<input type="radio" name="quiz1" value="0"> Kanady <br>
<input type="radio" name="quiz1" value="1"> Stanów Zjednoczonych <br>
<input type="radio" name="quiz1" value="0"> Meksyku <br> </p>
<hr>
<br>
<center><img src="waw.jpg" alt="obrazek"></center> <br>
<p class="quiz"> Pyt. 3 Co przedstawia powyższy obrazek? <br>
<input type="radio" name="quiz2" value="1"> Wawel w Krakowie <br>
<input type="radio" name="quiz2" value="0"> Zamek krzyżacki w Malborku <br>
<input type="radio" name="quiz2" value="0"> Zamek Książ <br>
<input type="radio" name="quiz2" value="0"> Zamek Królewski w Warszawie <br> </p>
<hr>
<p class="quiz"> Pyt. 4 Jakie jest najgłębsze jezioro w Polsce? <br>
<input type="radio" name="quiz3" value="0"> Mamry <br>
<input type="radio" name="quiz3" value="1"> Hańcza <br>
<input type="radio" name="quiz3" value="0"> Gopło <br>
<input type="radio" name="quiz3" value="0"> Śniardwy <br> </p>
<hr>
<p class="quiz"> Pyt. 5 Jakie miasto jest stolicą Francji? <br>
<input type="radio" name="quiz4" value="0"> Lyon <br>
<input type="radio" name="quiz4" value="0"> Marsylia <br>
<input type="radio" name="quiz4" value="0"> Bordeaux <br>
<input type="radio" name="quiz4" value="1"> Paryż <br> </p>
<hr>
<p class="quiz"> Pyt 6. Jak nazywa się najdalej na południe wysunięty punkt Afryki ? <br>
<input type="radio" name="quiz5" value="1">Przylądek Igielny<br>
<input type="radio" name="quiz5" value="0">Przylądek Dobrej Nadziei<br>
<input type="radio" name="quiz5" value="0">Przylądek Horn<br>
<input type="radio" name="quiz5" value="0">Przylądek Rocca<br> </p>
<hr>
<p class="quiz"> Pyt 7. Które państwo sąsiaduje z Polską? <br>
<input type="radio" name="quiz6" value="1">Niemcy <br>
<input type="radio" name="quiz6" value="0"> Hiszpania<br>
<input type="radio" name="quiz6" value="0"> Francja <br>
<input type="radio" name="quiz6" value="0"> Włochy <br> </p>
<hr>
<p class="quiz"> Pyt 8. Które miasto leży w województwie Lódzkim? <br>
<input type="radio" name="quiz7" value="0"> Radom<br>
<input type="radio" name="quiz7" value="1"> Radomsko <br>
<input type="radio" name="quiz7" value="0"> Ełk <br>
<input type="radio" name="quiz7" value="0"> Sanok <br> </p>
<hr>
<p class="quiz"> Pyt 9. Najgłebsze jezioro na świecie to? <br>
<input type="radio" name="quiz8" value="0"> Tanganika <br>
<input type="radio" name="quiz8" value="0"> Wielkie Jezioro Niedźwiedzie <br>
<input type="radio" name="quiz8" value="1"> Bajkał <br>
<input type="radio" name="quiz8" value="0"> Onega <br> </p>
<hr>
<p class="quiz"> Pyt 10. Najdłuższa rzeka w Europie to? <br>
<input type="radio" name="quiz9" value="0"> Wisła <br>
<input type="radio" name="quiz9" value="0"> Ren <br>
<input type="radio" name="quiz9" value="0"> Loara <br>
<input type="radio" name="quiz9" value="1"> Wołga <br> </p>
</form>
nospor
NAME teraz jest ok
VALUE nie sluzy do okreslania poprawnosci, tylko do okreslania wartosci danego radio.

Co jest poprawne a co nie, to mozesz sobie w kodzie js zapisac. Od biedy możesz nadać klase dla danego radio, by to stwierdzac.
Nie mniej jednak okreslania co jest poprawne w kodzie html/js mija sie z sensem, bo kazdy bedzie mogl to sobie podejrzec i wiedziec co ma zaznaczac a co nie.
Kamil9477
No tak ja to rozumiem że można podejrzeć, ale to nie jest do używania na prawdę tylko na projekt do szkoły. Czyli co muszę teraz mienić w tym skrypcie? Czy on wgle jest całkowicie zły?

Dobra znalazłem inny skrypt który działa i mam pytanie czy można do niego dodać coś żeby nie wyświetlał samej ilości punktów ale także ocenę, np. 0-4 pkt 2, 5-6 pkt 3, 7 pkt 3+, 8 pkt 4, 9 pkt 4+ i 10 pkt 5.

Skrypt:
Kod
<script language="javascript" type="text/javascript">
function total()
{
var k=0;
var radios = document.getElementsByName('quiz');
  var radios1 = document.getElementsByName('quiz1');
   var radios2 = document.getElementsByName('quiz2');
    var radios3 = document.getElementsByName('quiz3');
     var radios4 = document.getElementsByName('quiz4');
      var radios5 = document.getElementsByName('quiz5');
       var radios6 = document.getElementsByName('quiz6');
        var radios7 = document.getElementsByName('quiz7');
         var radios8 = document.getElementsByName('quiz8');
          var radios9 = document.getElementsByName('quiz9');
for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked) {
        k=parseInt(k)+parseInt(radios[i].value);
        break;
    }
}
for (var i = 0, length = radios1.length; i < length; i++) {
    if (radios1[i].checked) {
        k=parseInt(k)+parseInt(radios1[i].value);
        break;
    }
}
for (var i = 0, length = radios2.length; i < length; i++) {
    if (radios2[i].checked) {
        k=parseInt(k)+parseInt(radios2[i].value);
        break;
    }
}
for (var i = 0, length = radios3.length; i < length; i++) {
    if (radios3[i].checked) {
        k=parseInt(k)+parseInt(radios3[i].value);
        break;
    }
}
for (var i = 0, length = radios4.length; i < length; i++) {
    if (radios4[i].checked) {
        k=parseInt(k)+parseInt(radios4[i].value);
        break;
    }
}
for (var i = 0, length = radios5.length; i < length; i++) {
    if (radios5[i].checked) {
        k=parseInt(k)+parseInt(radios5[i].value);
        break;
    }
}
for (var i = 0, length = radios6.length; i < length; i++) {
    if (radios6[i].checked) {
        k=parseInt(k)+parseInt(radios6[i].value);
        break;
    }
}
for (var i = 0, length = radios7.length; i < length; i++) {
    if (radios7[i].checked) {
        k=parseInt(k)+parseInt(radios7[i].value);
        break;
    }
}
for (var i = 0, length = radios8.length; i < length; i++) {
    if (radios8[i].checked) {
        k=parseInt(k)+parseInt(radios8[i].value);
        break;
    }
}
for (var i = 0, length = radios9.length; i < length; i++) {
    if (radios9[i].checked) {
        k=parseInt(k)+parseInt(radios9[i].value);
        break;
    }
}
alert("Twój wynik to "+parseInt(k)+" na 10");
}
nospor
Skoro robisz projekt do szkoly, to mialbys choc na tyle przyzwoitosci by doczytac o czyms takim jak IF...
Kamil9477
Kod
if (parseInt(k)<5)
alert(Uzyskałeś ocenę 2);


coś takiego?
nospor
A dziala?

Watpie, bo teksty w alert to sie w apostrofy bierze....
Kamil9477
Kod
if (parseInt(k)<6) {
alert("Uzyskałeś ocenę 2");
}
if (parseInt(k)=6) {
alert("Uzyskałeś ocenę 3");
}
if (parseInt(k)=7) {
alert("Uzyskałeś ocenę 3+");
}
if (parseInt(k)=8) {
alert("Uzyskałeś ocenę 4");
}
if (parseInt(k)=9) {
alert("Uzyskałeś ocenę 4+");
}
if (parseInt(k)=10) {
alert("Uzyskałeś ocenę 5");
}


I nadal nie działa..
Turson
Jeszcze podstawy operatorów porównań też by się przydały
nospor
A czymze moj drogi leniuszku objawia się to "niedzialanie"?
Poza tym w IF nalezy porownywac wartosci a nie przypisywac...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.