Autor Zpráva
gogy27
Profil
Zdravim,
mam problem s tymto JS scriptom. Je to skript na zaskrtnutie vsetkych checkboxov. Je pravda, ze funguje lenze naopak. Ak zaskrtnem to policko pre zaskrtnutie vsetkych checkboxov taks a neudeje nic ale ked ho potom hned odskrtnem tak sa zaskrtnu vsetky ostatne. Mohli by ste prosim pozriet kde mam chybu?
Dakujem
<script type="text/javascript"><!--
function check_uncheck(form){
        var frm = document.forms[form];
        for (var i=0;i<frm.elements.length;i++) {
                var elmnt = frm.elements[i];
                if (elmnt.type=='checkbox') {
                        if(frm.master_box.checked == true){ elmnt.checked=false; }
            else{ elmnt.checked=true; }
                }
        }
        if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    else{ frm.master_box.checked = true; }
}
//--></script>
<?php
.
.
.
while($vypis2 = mysql_fetch_array($query3))
{
echo "<tr><td class='tdn' valign='top'><input type='checkbox' name='id_mazat[]' value='".$vypis2['id']."'></td><td  class='tdn' valign='top'>" . $vypis2['datum'] . "</td><td class='tdn' valign='top'><a href='main.php?clanek=prijate_spravy&id=".$vypis2['id']."'>". $vypis2['predmet'] . "</a></td></tr>";
}
echo "<tr><td colspan=3 class='tdn' valign='top'><input type=submit name='vymazat' value='Vymazať označené správy'></td></tr>";
?>
Tori
Profil
gogy27:
Funguje to možná naopak než chcete, nicméně přesně, jak je napsáno :-)
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
  if (frm.master_box.checked == true) { elmnt.checked=false; }
  else { elmnt.checked=true; }
  // = pokud je master_box zaškrtnutý, tak tento checkbox odškrtni (a naopak)
}

Zajímavější spíš je, pokud master_box je součástí téhož formuláře jako ty ostatní checkboxy. Pak totiž taky patří mezi frm.elements[], takže když na něj přijde řada v cyklu for, nejdřív zjistí svůj stav a pak ho změní. Výsledek: všechny checkboxy, na které přišla řada před master_boxem (pokud vůbec nějaké) se změní, master_box se změní, a všechny následující checkboxy zůstanou beze změny. Chtělo by to přidat kontrolu, aby se neměnila hodnota master_boxu, a pak už je jedno, jestli uděláte, aby ta ostatní zaškrtávátka kopírovala jeho stav, nebo naopak.

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