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:
<form onsubmit="return check(this);">Pyt 1:
<input name="pyt1" type="radio" value="foo" /> <input name="pyt1" type="radio" value="bar" /> <input name="pyt1" type="radio" value="dupa" /><br /> Pyt 2:
<input name="pyt2" type="radio" value="bar" /> <input name="pyt2" type="radio" value="foo" /> <input name="pyt2" type="radio" value="dupa" /><br /> Pyt 3:
<input name="pyt3" type="radio" value="foo" /> <input name="pyt3" type="radio" value="bar" /> <input name="pyt3" type="radio" value="dupa" /><br />
Można oczywiście rozbudować, to tylko przykład