Autor | Zpráva | ||
---|---|---|---|
jenad Profil |
#1 · Zasláno: 2. 9. 2014, 11:13:01
Ahoj, hraji si s tabulkami a skrýváním jejich sloupců. Na internetu jsem našel následující kód:
--------------------------- <html> <body> <script> function show_hide_column(col_no, do_show) { var tbl = document.getElementById('id_of_table'); var rows = tbl.getElementsByTagName('tr'); for (var row = 0; row < rows.length; row++) { var cols = rows[row].children; if (col_no >= 0 && col_no < cols.length) { var cell = cols[col_no]; if (cell.tagName == 'TD') cell.style.display = do_show ? 'block' : 'none'; } } } </script> <table id='id_of_table' border=1> <tr><td colspan="4"><table><tr><td>Can haz nested table?</td></tr></table></td></tr> <tr><td> 2</td><td> two</td><td> deux</td><td> zwei</td></tr> <tr><td> 3</td><td> three</td><td> trois</td><td> drei</td></tr> <tr><td> 4</td><td> four</td><td>quattre</td><td> vier</td></tr> <tr><td> 5</td><td> five</td><td> cinq</td><td>fünf</td></tr> <tr><td> 6</td><td> six</td><td> six</td><td> sechs</td></tr> </table> <form> Enter column no: <input type='text' name=col_no><br> <input type='button' onClick='javascript:show_hide_column(col_no.value, true);' value='show'> <input type='button' onClick='javascript:show_hide_column(col_no.value, false);' value='hide'> </form> </body> </html> V něm je možnost pomocí zadání čísla sloupce tabulky do formuláře potřebný sloupce skrýt , pokusil jsem uvedený formulář nahradit automatickým skrytí sloupce (tady sloupec číslo 1) nezávislém na formuláři. Bohužel níže uvedený kód nefunguje: <script> show_hide_column(1, false) </script> Můžete mi prosím pomoci v čem dělám chybu? |
||
quatzael Profil |
#2 · Zasláno: 2. 9. 2014, 11:17:58 · Upravil/a: quatzael
jenad:
Dej pryč ten prefix z onClick: javascript: jenad: A kde máš prosímtě definovanou hodnotu col_no ? Mít to jen v atributu name nestačí..
|
||
Joker Profil |
jenad:
„Bohužel níže uvedený kód nefunguje“ Nespouštíte ho třeba ve chvíli, kdy ty buňky ještě vůbec neexistují (tj. <script> je v kódu dříve než <table>)? quatzael: „A kde máš prosímtě definovanou hodnotu col_no ?“
Je to vstupní parametr té funkce. Jestli to volá přes show_hide_column(1, false) , je to ta 1.
|
||
quatzael Profil |
Zkus to upravit takhle:
<form> Enter column no: <input id="col_no" type='text' name="col_no"><br> <input type='button' onClick='show_hide_column(document.getElementById("col_no").value, true);' value='show'> <input type='button' onClick='show_hide_column(document.getElementById("col_no").value, false);' value='hide'> </form> Případně taky takhle: <form> Enter column no: <input type='text' name='col_no'><br> <input type='button' onClick='show_hide_column(document.getElementsByName("col_no").value, true);' value='show'> <input type='button' onClick='show_hide_column(document.getElementsByName("col_no").value, false);' value='hide'> </form> |
||
Chamurappi Profil |
Reaguji na quatzaela:
Hledáš problém v části kódu, o které nepíše, že by mu nefungovala… „Dej pryč ten prefix z onClick“ Ničemu nevadí, i když je zbytečný. „kde máš prosímtě definovanou hodnotu col_no ?“
V this.form je člen toho názvu a uvnitř atributů je implicitní with(this.form) . Takže mít ho v name stačí.
Reaguji na jenada: Sloupec číslo 1 je druhý sloupec. Sloupce se číslují od nuly. Uvedený kód mi funguje. Jestli u tebe nedělá vůbec nic, prosím o odkaz na živou ukázku. „ cell.style.display = do_show ? 'block' : 'none'; “
Tady bych doporučil mít '' místo 'block' . Jinak hrozí v některých prohlížečích rozpad při zobrazení.
„ var cols = rows[row].children; “
A tady cells místo children . Jinak hrozí nefunkčnost ve starších prohlížečích (vyjma Exploreru).
|
||
quatzael Profil |
#6 · Zasláno: 2. 9. 2014, 11:32:02 · Upravil/a: quatzael
Jo a zapomněl jsi tam napsat uvozovky:
name=col_no
Myslím, že je lepší psát dvojitý, ale to by neměl být problém. Chamurappi: „Ničemu nevadí, i když je zbytečný.“ To vím. „V this.form je člen toho názvu a uvnitř atributů je implicitní with(this.form). Takže mít ho v name stačí.“ To jsem nevěděl. |
||
Chamurappi Profil |
#7 · Zasláno: 2. 9. 2014, 12:37:09
Reaguji na quatzaela:
„zapomněl jsi tam napsat uvozovky“ Nezapomněl, nejsou povinné. „Případně taky takhle“ To je nefunkční kód, getElementsByName vrací kolekci elementů.
Prakticky nikdy není důvod používat metodu getElementsByName , nevím, proč po ní lidé sahají.
|
||
jenad Profil |
Při zpracování BB značek došlo k samovolnému sežrání celého příspěvku. Pardon.
Kluci díky všem za reakci (a ještě tak rychlou), chybu se mi podařilo opravit a dát do svého řešení. Chyba nebyla v kódu - opravdu fungoval jak jsem jej uvedl, ale chyba byla v mém PC a spouštění skriptů v prohlížeči. Chamurappi cílil správným směrem. Jediná neplecha, která mně v této souvislosti ještě trápí je to, že skrývám sloupce ve dvou tabulkách - jedná je záhlaví a druhá obsahuje data (2 kvůli scrollování dat, jež beru z mysql). Přičemž 1 tabulka je OK, sloupce zachovají velikost, ale v tabulce číslo 2 se sloupce roztáhnou na původní velikost tabulky. Nemohu přijít na to, čím tuto vlastnost ovlivním. Pro přesnější info můžete mrknout na živou ukázku: tank.8u.cz Hráč: jenad Heslo: vstup/ řešená část - seznam vlevo, položka "TS"-podpoložka "pokec" (tmavá část tabulky OK, světlá je špatně) Moderátor Joker: Odstranil jsem zkopírovaný kód stránky.
Jednak se celý nevešel do příspěvku a jednak není žádoucí vkládat kilobajty kódu. Buď jen problémové místo, nebo živou ukázku. |
||
jenad Profil |
jj taky jsem na to přišel a byls rychlejší s úpravou. Dal jsem živou ukázku, ale kde je problémové místo nevím, proto přikládám odkaz na soubor: …
Moderátor Chamurappi: Odkaz vymazán. Nepoužívej na sdílení souborů úložiště, která chtějí peníze nebo opsat captchu. Ten filtr tu není pro srandu králíkům…
|
||
juriad Profil |
#10 · Zasláno: 2. 9. 2014, 13:49:01
jenad:
Já ti bohužel neporadím, ale někdo jiný v České republice určitě ano :) 403 - Přístup odepřen Z důvodu opakujících se problémů s napadáním hostovaných aplikací došlo k zablokování odesílání POST požadavků ze zahraničí. Tuto funkci si může vlastník webu vypnout ve své administraci. |
||
jenad Profil |
#11 · Zasláno: 2. 9. 2014, 13:58:58
juriad:
Ahoj, snaha se cení, děkuji. Můžeš se už na to podívat. Uvedenou blokaci jsem odstranil. Tak pokud budeš moci mrkni nato. Předem děkuji. |
||
juriad Profil |
#12 · Zasláno: 2. 9. 2014, 14:21:31
Možná by bylo fajn říct, že sloupce se přepínají klikáním na ta šikmá tlačítka nahoře (a že tlačítko VŠE nefunguje). :-)
Ať dělám co dělám, tak sloupce v hlavičce tabulky jsou stejně široké jako sloupce v těle. Tedy na sebe vizuálně navazují. Používám Mozilla Firefox 31.0. Co znamená, že zachovají velikost? Při různém počtu sloupců jsou různě široké. Pokud to tak nechceš, zruš width u obou tabulek. |
||
jenad Profil |
#13 · Zasláno: 2. 9. 2014, 16:34:37
juriad:
Má poklona pane.._.)) i přes pastičky, jež mně byly samozřejmé, jsi mi odboural tuto starost, pomohlo zrušení width. Díky moc. Téma vyřešeno. Díky všem. |
||
Časová prodleva: 10 let
|
0