Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 2. 1. 2013, 00:05:25
Jak lze prosím v PHP efektivně udělat seřazení elementů podle hodnot k nim vztahujících se proměnných od nejnižší po nejvyšší , jestliže každý element je definován v samostatném souboru pomocí include..??
Mělo by to být asi takto: Proměnné: $a = 7; $b = 5; $c = 2; $d = 9; A podle toho by pak mělo být pořadí příkazů následovné: include file_c.php; include file_b.php; include file_a.php; include file_d.php; A v JS bych potřeboval přeskupit již zobrazené elementy: <div id="a"></div> <div id="b"></div> <div id="c"></div> <div id="d"></div> v JS by bylo např.: var a = 7; var b = 5; var c = 2; var d = 9; takže by se ty elementy přemístily do následujícího pořadí: <div id="c"></div> <div id="b"></div> <div id="a"></div> <div id="d"></div> Je to na to nějaké jednoduché řešení?? Předem díky!! |
||
ShiraNai7 Profil |
#2 · Zasláno: 2. 1. 2013, 00:08:16
Celé řešení ti nenapíšu, ale určitě si to dej vše do polí. Jednotlivé proměnné se špatně řadí.
|
||
quatzael Profil |
#3 · Zasláno: 2. 1. 2013, 00:19:03 · Upravil/a: quatzael
Ok, v tom JavaScriptu ale potřebuju ty již umístěné elementy přeházet i s jejich aktuálním obsahem, takže ten jejich obsah musím tedy nejdřív nějak uložit, pak je smazat a nakonec je po seřazení znovu zobrazit..
Zkusím to teda nějak vymyslet.. Pomocí pole chápu, ale spíš mi jde o to jak pomocí seřaní jednoho pole (s proměnnými) seřadím pole jiné (s názvy include souborů nebo id elementů).. Už možná vím.. |
||
Chamurappi Profil |
#4 · Zasláno: 2. 1. 2013, 01:03:28
Reaguji na quatzaela:
Metoda sort na polích dostává jako argument porovnávací funkci. Můžeš tedy řadit pole naplněné strukturami, v nichž bude jedna složka element a druhá složka číslo, při čemž porovnávací funkce bude porovnávat jen to číslo. Seřazené pole si pak projdeš a jednotlivé elementy naskládáš na původní místo appendChild em…
|
||
quatzael Profil |
#5 · Zasláno: 2. 1. 2013, 13:04:35
Chamurappi:
no tak to PHPčko jsem zvládl celkem hravě, ale s tím javascriptem je to horší.. funkci .sort() celkem chápu, ale moc nevím jak ty elementy fakticky přemístit.. |
||
quatzael Profil |
#6 · Zasláno: 2. 1. 2013, 16:35:46
Tak já jsem něco našel, trochu jsem to upravil, ale bohužel to nefunguje..
http://jsfiddle.net/8W6AU/13/ |
||
Chamurappi Profil |
#7 · Zasláno: 2. 1. 2013, 16:41:04
Reaguji na quatzaela:
V tom Fiddlu máš celý JS v MooToolsím onload u, takže ti konzole oprávněně křičí, že neexistuje globální funkce myFunction .
Ale stejně je ten skript polofunkční zmetek, nefungoval by ve všech prohlížečích. |
||
quatzael Profil |
#8 · Zasláno: 2. 1. 2013, 16:48:33
Chamurappi:
nerozumín termínu MooToolsí onload.. existuje tedy nějaké řešení, které funguje bez prolému ve všech prohlížečích?? |
||
Chamurappi Profil |
#9 · Zasláno: 2. 1. 2013, 16:54:38
Reaguji na quatzaela:
„nerozumín termínu MooToolsí onload..“ Vlevo v nastavení Fiddlu máš vybráno, že uvedený JS používá Mootools a že se má volat v onload .
„existuje tedy nějaké řešení, které funguje bez prolému ve všech prohlížečích??“ Ano. Princip jsem ti popsal ve [#4]. Kompletní řešení ti nenapíšu, mimo jiné i proto, že jsi neuvedl moc konkrétní zadání, a není mi tedy jasné, co a proč a k čemu vlastně chceš. |
||
quatzael Profil |
#10 · Zasláno: 2. 1. 2013, 17:19:31
Chamurappi:
no v podstatě potřebuju podobný princip jako je v tý ukázce (tady už fungující) http://jsfiddle.net/8W6AU/15/ až na to, že ty hodnoty, podle kterých to potřebuju seřadit budu mít v atributech data-.. jestli Tě opravdu zajímá skutečnej "důvod proč" to chci, tak Ti můžu ukázat živou ukázku, ale jenom pokud mi napíšeš svoji mail adresua já Ti pak pošlu odkaz přímo na email a případně bys mi mohl prosím pomoci i s jiným problémem kterej uvádím i s adresou zde: Na zobrazení jednoho div "reaugují" v IE jiné divy Možná, že je to banalita, ale já tomu CSS v IE opravdu nerozumím.. Chová se to totiž naprosto nevyzpytatelně.. |
||
quatzael Profil |
Tak tady dávám řešení:
PHP: $items = array("item-a.php" => "8", "item-b.php" => "2", "item-c.php" => "6"); asort($items); foreach ($vas $key => $val) { //echo "$key = $val\n"; include $key; } JS: http://jsfiddle.net/RZ2K4/3/ |
||
Chamurappi Profil |
#12 · Zasláno: 3. 1. 2013, 12:29:56
Reaguji na quatzaela:
Metoda getElementsByClassName nefunguje ve všech prohlížečích. Metoda forEach na polích také ne.
|
||
quatzael Profil |
Chamurappi:
Na kterých to nefunguje?? já jsem zkoušel kromě Safari všechny ostatní (IE, Mozzilu, Chrome, Operu) a bylo to bez problému. Myslíš starší verze? čím se to dá teda nahradit, aby to fungovalo všude?? |
||
Chamurappi Profil |
#14 · Zasláno: 3. 1. 2013, 12:50:42
Reaguji na quatzaela:
„Myslíš starší verze?“ Ano. Ty snad ladíš stránky jen pro nejnovější verze prohlížečů? To je hloupé. „čím se to dá teda nahradit, aby to fungovalo všude??“ Pole můžeš procházet cyklem a elementy hledat podle jiného společného znaku, než je třída. |
||
_es Profil |
#15 · Zasláno: 3. 1. 2013, 12:54:35
quatzael:
„čím se to dá teda nahradit, aby to fungovalo všude??“ Tak, že tie elementy získaš nejako inak, napríklad: ObaľujúciElement.getElementsByTagName("DIV") |
||
quatzael Profil |
#16 · Zasláno: 3. 1. 2013, 13:22:19 · Upravil/a: quatzael
teď jsem to chtěl aplikovat přímo do mýho webu, ale křičí mi to:
Chyba: DOM Exception: NOT_FOUND_ERR (8) u řádku s příkazem: document.body.insertBefore(el, br); Proč prosím například nefunguje tohle?? http://jsfiddle.net/quatzael/RZ2K4/5/ mám tam jen <span> místo <br> a je z nějakých nepochopitelných důvodů problém.. aha, tak to nefunguje asi jenom v IE, ale v ostatních prohlížečích ten button háže nahoru.. nebo ještě poupravený o obal tohle: http://jsfiddle.net/quatzael/RZ2K4/7/ |
||
quatzael Profil |
Tak už jsem to asi vyřešil.. http://jsfiddle.net/quatzael/RZ2K4/15/
Je to takhle v pořádku?? No ale v reálu (v mojí aplikaci) mi to ty jednotlivý divy totálně rozmontuje.. já tam mám složitou vnitřní strukturu, kterou potřebuju aby zůstala.. Celou vnitřní strukturu mi to rozebralo a vypsalo všechny elementy za sebou pod sebe.. Tady to jde vidět, že to nezůstane pohromadě.. http://jsfiddle.net/quatzael/RZ2K4/17/ To bude asi tím .getElementsByTagName(), určitě to bere i ty vnitřní elementy... Tak jsem si to v mý aplikaci poupravil zase zpátky na to s tím .getElementsByClassName() a funguje to bez problému.. |
||
_es Profil |
#18 · Zasláno: 3. 1. 2013, 14:55:25
quatzael:
Máš tam: var classname = wrap.getElementsByTagName("div"); var classname = document.getElementsByClassName('item'); „Celou vnitřní strukturu mi to rozebralo a vypsalo všechny elementy za sebou pod sebe..“ No tak to sprav tak, aby sa to „nerozobralo“ - premiestňovanie elementov už predsa vieš. Ignoruješ rady v [#12]. |
||
quatzael Profil |
#19 · Zasláno: 3. 1. 2013, 15:24:11
_es:
Mělo tam být jenom: var classname = wrap.getElementsByClassName('item'); Ale výsledek je nakonec stejnej.. a jak to mám teda udělat s tím .getElementsByTagName("div"); ??
já tam mám v každým tom elementu s class="item" složitou strukturu se stovky dalších divů, to přece nemůžu všechno nějak složitě přemísťovat...
|
||
_es Profil |
#20 · Zasláno: 3. 1. 2013, 15:39:10
quatzael:
„já tam mám v každým tom elementu s class="item" složitou strukturu se stovky dalších divů“
No ale my nevieme, čo tam máš, lebo si to neukázal. „to přece nemůžu všechno nějak složitě přemísťovat...“ Ako „zložito“? Tak, ako premiestniš jeden div obsahujúci len text, rovnako premiestniš aj div obsahujúci niečo zložitejšie. |
||
quatzael Profil |
#21 · Zasláno: 3. 1. 2013, 15:49:00
_es:
„Ako ‚zložito‘? Tak, ako premiestniš jeden div obsahujúci len text, rovnako premiestniš aj div obsahujúci niečo zložitejšie.“ To jo, ale jak to mám teda vyřešit bez toho .getElementsByClassName() a forEach , aby se ta vnitřní struktura zachovala??
|
||
_es Profil |
#22 · Zasláno: 3. 1. 2013, 15:58:29
|
||
quatzael Profil |
#23 · Zasláno: 3. 1. 2013, 16:04:58
_es:
„No získaš ich nejako inak, trebárs pomocou rady v [#15].“ ale to se mi zase celá ta struktura rozsype, protože ta funkce .getElementsByTagName("div") vybírá všechny divy (i ty zevnitř) takže je seřadí a vypíše jeden za druhým a ta původní struktura se už nezachová..
|
||
_es Profil |
#24 · Zasláno: 3. 1. 2013, 16:11:00
quatzael:
„protože ta funkce .getElementsByTagName("div") vybírá všechny divy (i ty zevnitř)“
No tak to sprav nejako inak, snáď trochu logicky myslieť vieš. Sú aj DOM metódy na prechádzanie v štruktúre DOM. Alebo použi značku <P> a máš to vyriešené jednoduchšie.
|
||
Časová prodleva: 11 let
|
0