Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PRzeprowadzenie testu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
darpla
Witam serdecznie wszystkich forumowiczów


Moje pytanie dotyczy przeprowadenia testu za pomocą języka Java Script. W jaki sposób po naciśnięciu przycisku RAdioButton ma być zliczny punkt za poprawną odpowiedź, a 0 pkt za niepoprawną odpowiedź.Następnie punkty mają być zliczane na końcu programu i podawany wynik. Wiem, żeby użyć tutaj tablicy, ale nie mam konkretnego pomysłu, jak to zdefiniować. Może jak zrobię algorytm to mi się rozjaśni.Tymczasem proszę o wskazówki.


Z góry serdecznie dziękuję smile.gif


Pozdrowienia
Diwi
no cóż pierwsze co mi się nasuwa to coś takiego:

Kod
<script language="text/javascript">
var pytanie = array();
var punkty = array();

var pytania = array();

ytanie['numer_pytania']['numer_odpowiedzi'] = 'Odpowiedź numer 1';

if (document.nazwa_formularza.nazwa_sekcji_z_select = pytanie['numer_pytania']['numer_odpowiedzi']) {

punkty['numer_pytania'] = tutaj ilosc punktow;

}
</script>

Pisane z pamięci więc nie wiem czy będzie działać
Mam nadzieje że z tego wszystko rozumiesz smile.gif

Podzrawiam
dasko
Po pierwsze: test w JS jest troche bezsensownym rozwiązaniem => zawsze można podejrzeć żródło.

Po drugie: po co dodawać punkty po nacisnieciu pola radio? kod się niepotrzebnie wykonuje, a chyba nie chcesz, żeby użytkownik nie mógł zmieniać swojego wyboru => lepiej zliczać na końcu.

Diwi rzeczywiście pisał z pamięci, trochę mu się pomieszało z php, nie tylko konstrukcja tablic, ale także ogólny brak tablic asocjacyjnych w JavaScripcie => od tego są obiekty.

Jeśli juz musisz skorzystać z JavaScriptu, to proponuje takie rozwiązanie:
Kod
<script>
function check(f) {
    var pkt = 0; // liczba punktów
    var odp = { pyt1: 'dupa', pyt2: 'foo', pyt3: 'bar' }; // lista poprawnych odp.
    var e = f.elements;
    for(k in e) {
                // dodajemy punkt jeśli poprawna
  if(e[k].checked && odp[e[k].name] != undefined && e[k].value == odp[e[k].name]) pkt++;
    alert('Zdobyles ' + pkt + ' punktów');
    return false; // nie wysyłamy formularza
}
</script>


Przykład zastosowania:
  1. <form onsubmit="return check(this);">Pyt 1:
  2. <input name="pyt1" type="radio" value="foo" />
  3. <input name="pyt1" type="radio" value="bar" />
  4. <input name="pyt1" type="radio" value="dupa" /><br />
  5. Pyt 2:
  6. <input name="pyt2" type="radio" value="bar" />
  7. <input name="pyt2" type="radio" value="foo" />
  8. <input name="pyt2" type="radio" value="dupa" /><br />
  9. Pyt 3:
  10. <input name="pyt3" type="radio" value="foo" />
  11. <input name="pyt3" type="radio" value="bar" />
  12. <input name="pyt3" type="radio" value="dupa" /><br />
  13. <input type="submit" />
  14. </form>


Można oczywiście rozbudować, to tylko przykład smile.gif
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.