[JS] zaznaczenie radio button po kliknięciu na napis.

0

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?

0
        for (var i = 0; i < arr_sp.length; i++) {
                arr_sp[i].onclick = (function(item){
                    return function() {
                        item.checked = !item.checked;
                    };
                }(arr_sp[i]));
        }
0

dzięki za pomoc. Pozdrawiam.

0

@GhostDog:
Najlepsza książka nauczająca samego JavaScriptu to "JavaScript - Mocne strony", której autorem jest Douglas Crockford. Słyszałeś o formacie danych JSON, używanym często w Ajaxie? Crockford jest twórcą JSON-a. Jest też architektem aplikacji w YAHOO i bierze czynny udział w tworzeniu nowych wersji JavaScriptu.

Książka ma kilka zalet. Jest niemal kompletna jeśli chodzi o rzeczywiście przydatne cechy języka JavaScript. Mówi też o wszelkich pułapkach i funkcjach, od których trzeba się trzymać z daleka. Pokazuje też stosunkowo zaawansowane (ale bardzo ważne) rzeczy, takie jak domknięcia, programowanie funkcyjne, dziedziczenie prototypowe. Przy tym jest zwięzłą i niedroga (~35 zł?).

Książka nie podaje jednak gotowych rozwiązań, jakie możesz wstawić na stronę. Nie opisuje DOM i sposobów manipulacji dokumentem. Uczy po prostu efektywnego wykorzystania samego języka JavaScript. To bardzo przydatna umiejętność. Dobrze jest połączyć tę książkę z inną, bardziej "praktyczną". Choć gdy już będziesz odpowiednio dobrym koderem to stwierdzisz, że "JavaScript - Mocne strony" była praktyczna, bo porady w niej zawarte służą Ci w praktycznie każdym fragmencie kodu, jaki napiszesz.

Tak naprawdę to problem, który opisałeś w tym temacie, wynika z niewłaściwego zastosowania domknięcia. Praktycznie dokładnie ten przykład (przypisywanie onclick w pętli for) jest podany w książce (raz na jakiś czas mimo wszystko pada tam słówko o DOM, czy zdarzeniach)

1 użytkowników online, w tym zalogowanych: 0, gości: 1