Autor Zpráva
Prefin
Profil
Ahojda.
Mám trochu problém s jednou blbinkou.
Tady jsem našel jednoduchej scriptíček na skrytí a odkrytí prvku po kliku (neznám JS).
Ale chová se mi to divně a nevím proč.
Nejde o samotnou funkci, ta jeok, ale o zobrazení toho co skrývám.
Abych to vysvětlil.
Tohle mám v hlavičce
<script language="javascript">
document.documentElement.className = "zaplyjs";
</script>
<style>
.zaplyjs .skryvany {display: none;}
</style>
<script language="javascript">
function zobrazSkryj(idecko){
    el=document.getElementById(idecko).style;
    el.display=(el.display == 'block')?'none':'block';
}
</script>
Cyklem vypisuju tabulku, vždy jeden cyklus po dvou řádcích z nichž ten druhý skrývám.
Na prvním řádku mám v <tr... onclick=\"zobrazSkryj('oddil".$i."'
V řádku je deset buňek.
A v druhém řádku pak<tr id=\"oddil".$i."\" class=\"skryvany\"><td colspan="10">.....</td></tr>
Skrývání funguje dobře, jenomže když druhý řádek odkryju tak prohlížeč prdí na colspan="10"
a nacpe obsah do první buďky, čímž mi to rozstřelí tabulku.
Ve zdrojáku (Ctrl+U) to mám všechno ok:
<tr bgcolor="#fafafa" onmouseover="bgColor='#B7B7B7'" onmouseout="bgColor='#fafafa'">
<td align="center"><input type="checkbox" name="kupuji[]" value="152"></td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="right" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
<td align="center" onclick="zobrazSkryj('oddil2')" title="KLiknutím zde se zobrazí další informace o poptávce.">...</td>
</tr>
<tr id="oddil2" class="skryvany">
<td align="left" colspan="10" bgcolor="#FF9999">Skrývaná část</td>
</tr>
Asi mi z toho už mrskne protože to fakt nechápu (anebo jsem b...).
Díky za radu
Chamurappi
Profil
Reaguji na Prefina:
Potíž je v tom, že tabulka může mít v prohlížeči výchozí hodnotu CSS vlastnosti display jinou než block — v novějších prohlížečích mívá table-row. Pak nastavení na block způsobí, že se řádek přestane chovat jako řádek tabulky, stane se z něj cosi jako <div>. Mohl bys tedy nastavovat table-row místo block, ale to zase nechodí v prohlížečích, které table-row neznají.

Měň raději třídu. Můžeš odebírat/přidávat class="skryvany", tedy v řeči JavaScriptu:
function zobrazSkryj(idecko){
    var el = document.getElementById(idecko);
    el.className = (el.className == 'skryvany') ? '' : 'skryvany';
}
Prefin
Profil
Nááááááádhera.
Díkas

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: