Autor Zpráva
stepanka
Profil *
Ahoj,

prosím, pomozte někdo... Mám JS funkci pro zaškrtnutí/odškrtnutí všech checkboxů v daném objektu. Vypadá takto:

function SelectAllFromGroup(gID) {
	var group = document.getElementById(gID);
	var inputs = group.getElementsByTagName('input');
	var zatrzeno=true;
	var checkit=true;

	for ( var i = 0; i < inputs.length; i++ ) {
		if (inputs[i].checked == false)
        zatrzeno=false;
	}
	
	if (zatrzeno==false) {
   	checkit=true;
   } else {
   	checkit=false;
   }
	
	for ( var i = 0; i < inputs.length; i++ ) {
		inputs[i].checked = checkit;
	}
}


Funguje to, pokud mám jeden objekt (<td id="g">, <div id="g">), někde u toho
<a href="#" onclick="SelectAllFromGroup(\'g\')">Označit vše</a>
a všechny checkboxy v tom daném objektu. Pak se označí/odznačí všechny.

A já bych tu funkci potřebovala upravit takto: Potřebuju mít stejný odkaz "Označit vše", ale checkboxy jsou nyní v několika <td id="g"> buňkách tabulky. Přesněji řečeno mám v záhlaví tabulky odkaz "Označit vše" a potom načítám data z databáze a cyklem vypisuju několik řádků tabulky. Každá buňka je tedy otevřena a zavřena a i když mají všechny stejné id (id="g"), tak se označí jen checkbox v první buňce.

Šlo by to nějak upravit, aby ta funkce uměla označit všechny checkboxy ve VŠECH objektech s id="g"?

Mockrát děkuju.
stepanka
Profil *
Už nic, už to mám... samozřejmě jde nastavit ID celé tabulce, pak to funguje. Nevím proč mě to nenapadlo dřív..
los
Profil *
Síce to už máš, ale:

1, V prvom cykle môžeš hneď po nájdení prvého nezaškrtnutého inputu cyklus ukončiť, t.j. použiť break.

2, Druhá podmienka by sa dala zapísať rovno jedným príkazom (checkit = !zatrzeno), ale v podstate premennú checkit vôbec nepotrebuješ, takže celá podmienka je navyše. V poslednom cykle stačí checkit nahradiť za !zatrzeno.

Sú to drobnosti, ale keď sa takých drobností nahromadí viac, tak je potom celý program zbytočne neprehľadný.
stepanka
Profil *
los
Aha, děkuju... Nemohl bys mi tu funkci přepsat do té podoby, o které píšeš? Možná jsi něco malého zapomněl, nebo jsem Tě nepochopila s tím breakem, ale když to upravuju podle Tvého popisu, tak mi to moc dobře nefunguje... moc díky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: