Autor Zpráva
Enyeus
Profil
Ahoj,
potřeboval bych poradit jak na zaškrtnutí všech checkboxů. Ne podle name, ale podle id. Mám takovýto kód:
<script language="JavaScript">
function checkAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = true ;
}
</script>
<form> 
  <input type="checkbox" onclick="checkAll(checkAll);"> Zaškrtnout vše<br>
  <input type="checkbox" id="checkAll" value="8" name="hodnota1"> Hodnota 1<br>
  <input type="checkbox" id="checkAll" value="4" name="hodnota2"> Hodnota 2</td>
</form> 

Ten sice pro name funguje, ale pro id ne. Poradil byste někdo jak ho upravit aby ano?
Radek9
Profil
Enyeus:
No fuj! Dvakrát to samé ID? Použijte class a do funkce dejte document.getElemensByClassName. Pokud ale trváte na ID, tak nejspíše to samé, ale s document.getElementById.
Enyeus
Profil
No funkci jsem předělal na toto (nevím jestli se to tak má vůbec dělat)
function checkAll(field)
{
	for (i = 0; i < field.length; i++) {
		document.getElementsByClassName(field[i]).checked = true ;
	}
}

Ale ani s
document.getElementById(field[i]).checked = true ;
to nejde.
Radek9
Profil
function checkAll(field){
  class = document.getElementsByClassName(field);
  for(i in class){
    class[i].checked = true;
  }
}
Chamurappi
Profil
Reaguji na Enyea:
onclick="checkAll(checkAll);"
Proč předáváš funkci samu sebe?

Ne podle name, ale podle id.
Proč?


Reaguji na Radka9:
Metodu document.getElementsByClassName zdaleka nepodporují všechny prohlížeče.
Enyeus
Profil
Radek9:
Díky už to funguje.

Chamurappi:
Správně to mělo být onclick="checkAll('checkAll');" - název té třidy.
Name dopředu nebudu vědět, generovat jej budu z databáze.
Chamurappi
Profil
Reaguji na Enyea:
Obal je všechny jedním <div>em a zaměř je v něm pomocí metody getElementsByTagName.

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:

0