Witam
Dopiero, co raczkuje w JS, przerabiam książkę M.Lisa JS Praktyczny kurs, przy okazji może ktoś zna jakaś lepszą książkę?.
Zadanie jest w skrócie takie:
Zaznaczyć radiobutton po kliknięciu na tekst znajdujący się obok, czyli odpowiednik html-owego label for.
Jedyne rozwiązanie jakie mi działa to: (tekst mający znaleźć się przy przycisku wsadziłem w span, nie wiem jak za to się zabrać się inaczej, to znaczy bez dodatkowego tag-u tak jak niby chce autor w zadaniu) :
var arr_rb = document.getElementsByTagName("input");
function radioSelect(idx) {
arr_rb[idx].checked = true;
}
a w html
<input type="radio"
value="1"
name="grupa1"
/><span onclick="radioSelect(0)">Opcja nr 1</span>
</html>
Co jest z oczywistych względów beznajdziejnym rozwiązaniem.
Próbowałem w taki sposób:
<body onload="setOnclick2Tag('span');">
i JS:
function setOnclick2Tag(tagName) {
var arr_sp = document.getElementsByTagName(tagName);
var arr_rb = document.getElementsByTagName("input");
for (i = 0; i < arr_sp.length; i++) {
arr_sp[i].onclick = function() {
arr_rb[i].checked = true;
}
}
}
Troszkę lepiej mimo dobrych chęci kod nie działa, nie ma błędów, żaden element się nie zaznacza.
Może mnie ktoś naprowadzić dlaczego?