Autor | Zpráva | ||
---|---|---|---|
PetrPan Profil * |
#1 · Zasláno: 23. 1. 2007, 14:03:21
Dobrý den,
sháním tutoriálek pro změna pořadí řádků v tabulce. Zatím jsem vždycky našelpouze na změnu p ořadí v seznamu (li) a když sem se to snažil upravit pro tabulku tak to neudělalo krom chyb nic. |
||
zero0x Profil |
#2 · Zasláno: 23. 1. 2007, 15:10:00
takze metody neviem ci presne tak maju byt, si najdi na internete, ale vo vseobecnosti
nie je to tak uplne ajax ako si asi myslis, je to skor W3C DOM, ale sranda je s tym. |
||
los Profil * |
#3 · Zasláno: 24. 1. 2007, 02:10:10
Na výmenu riadkov nemusíš odstrániť najprv všetky riadky a potom ich tam všetky pridať v novom poradí, ale stačí odstrániť iba tie dva riadky a pridať ich na správne miesto.
Metódy, ktoré na to potrebuješ poznať: nextSibling, insertBefore. Keď vieš, ktoré riadky chceš vymeniť (napr. el1 a el2), tak môžeš použiť niečo takéto: function swap(el1, el2) { |
||
los Profil * |
#4 · Zasláno: 24. 1. 2007, 02:11:14
Metódy, ktoré na to potrebuješ poznať: nextSibling, insertBefore
nextSibling je samozrejme vlastnosť a nie metóda. |
||
PetrPan Profil * |
#5 · Zasláno: 24. 1. 2007, 19:13:39
zero0x, los: diky za tip, posledni problemek ktery mam je, ze nevim jak mam danefunkce volat a jak jim dat parametry.
Prozatim to mam v pracovni verzi takto: <table id="tabulka"> kde jako parametr funcim predavam cislo radku, coz je samozrejme spatne protoze pokud sprehazim tabulku tak uz to nefunguje korektne a prehazuje to jine radky. Je nejaka moznost jak zjistit poradi radku a nebo bude jednodussi to delat pomoci id radku? Ze kazdy radek dostane id a to pak budu davat jako parametr? Omlouvam se ze tak otravuju ale v JS jsem zatim "LAMA" |
||
los Profil * |
#6 · Zasláno: 24. 1. 2007, 22:36:43
Možnosti:
1. jedna obsluha udalosti click na celú tabuľku - pri kliknutí na hociktorú bunku sa vyhodnotí, či sa má riadok posunúť alebo nie. 2. nastaviť v každom riadku pre vybrané bunky obslužnú funkciu, ktorá posunie riadok. V oboch prípadoch je vhodné nastaviť triedu bunkám, ktoré majú posúvať riadky. Napr. ak bunka posúva riadok hore, bude mať nastavený atribút class na "up" a ak dole, tak "down". Ak sa rozhodneš pre prvú možnosť, budeš sa podľa tohto atribútu rozhodovať, kam sa má riadok posunúť, ak pre druhú možnosť, tak podľa toho atribútu budeš nastavovať obslužnú funkciu pri inicializácii tabuľky. Prvá možnosť: document.getElementById("tabulka").onclick = function(e) { Je tam použitých pár fínt, ale postup je asi taký: v prvom cykle nájdeme riadok, na ktorý sa kliklo, v druhom cykle nájdeme druhý riadok, s ktorým ho chceme vymeniť a nakoniec sa to vymení. Funkcia swap vyzerá podobne ako v mojom predchádzajúcom príspevku, ale je doplnená ešte o nejakú kontrolu, aby to zvládala aj Opera so svojimi bugmi v JavaScripte: function swap(el1, el2) { Druhá možnosť by vyzerala podobne: Boli by dve funkcie, ktoré by sa podobali na tú čo som napísal (jedna by bola pre posun hore, druhá pre posun dole). Tie by si na začiatku zavesil v cykle na obsluhu udalosti click príslušných buniek. |
||
PetrPan Profil * |
#7 · Zasláno: 25. 1. 2007, 16:58:34
Tak jsem si to tedokn udelal nasledovne: Bohuzel mi toto reseni funguje pouze ve FF a v IE a Opere ne. Mohl by mi nekdo poradit co tam mam opravit aby mi to fungovali ve trech techto hlavnich prohlizecich prosim?
<html> |
||
PetrPan Profil * |
#8 · Zasláno: 25. 1. 2007, 17:00:02
IE - haze chyby
Opera - posouva pouze nahoru ale ne dolu FF - funguje vsechno, zadne chybove hlaseni |
||
los Profil * |
#9 · Zasláno: 25. 1. 2007, 17:37:03
Ak chceš, aby to fungovalo aj v Opere, tak nahraď riadky:
parent.insertBefore(el2, next1); za if (el1 != next2) Keď som Tvoj kód skopíroval bez zmeny a spustil v IE, tak mi šiel. Ak to naozaj hádže chyby, pomohlo by chybové hlásenie. |
||
PetrPan Profil * |
#10 · Zasláno: 25. 1. 2007, 19:53:40
Dik za typ. Ted mi to jde i v Opere. V IE stale nejde. Predtim sem to mel na Win2000, IE6 a nedelalo to nic, jen myslim ze to hazelo nejaky chyby, neco s tim parent myslim, ale ruku za to do ohne nedam. A ted doma na Win XP, IE6 mi to chybu nehlasi ale taky to nic nedela. Takze problem bude zrejme s tim
this.parentNode |
||
PetrPan Profil * |
#11 · Zasláno: 25. 1. 2007, 19:53:40
Dik za typ. Ted mi to jde i v Opere. V IE stale nejde. Predtim sem to mel na Win2000, IE6 a nedelalo to nic, jen myslim ze to hazelo nejaky chyby, neco s tim parent myslim, ale ruku za to do ohne nedam. A ted doma na Win XP, IE6 mi to chybu nehlasi ale taky to nic nedela. Takze problem bude zrejme s tim
this.parentNode |
||
los Profil * |
#12 · Zasláno: 25. 1. 2007, 23:30:38
Mne to ide v IE (aj na Win2000, aj na WinXP). Nemáš v tom kóde doma niečo ďalšie? Nenačítava sa tá stránka z cache? Máš zapnutý JavaScript (nj, asi blbá otázka)? Mohol by si to dať na web, aby sa na to nefungujúce dalo pozrieť?
|
||
PetrPan Profil * |
#13 · Zasláno: 26. 1. 2007, 07:16:21
|
||
los Profil * |
#14 · Zasláno: 26. 1. 2007, 07:23:51
Aha, keď som prekopíroval Tvoj kód, tak som tam musel doplniť deklaráciu premenných použitím kľúčového slova var a potom som na to zabudol. Takže aby to fungovalo aj v IE, musíš deklarovať premennú tabulka, pretože tak, ako to je napísané teraz, to používa globálnu premennú tabulka. A keďže existuje prvok s id="tabulka", tak sa to medzi sebou bije. Pri tej príležitosti by bolo dobré deklarovať aj ostatné lokálne premenné: riadky a i.
Takže stačí upraviť začiatok skriptu takto: var tabulka = document.getElementById('tabulka'); |
||
PetrPan Profil * |
#15 · Zasláno: 26. 1. 2007, 09:37:54
O dekuji ti:) Uz mi to bezi vsude:)))
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0