Autor | Zpráva | ||
---|---|---|---|
Nadan Profil |
#1 · Zasláno: 3. 6. 2011, 15:03:36
Chamurappi:
Jo, bohužel jsem se toho dopustil. Nechci totiž měnit stav <div>u, přes který projíždí kursor... (Jsem idiot) Když vezmu „onmouseover="this.className = 'zobrazit'“ Tak bych potřeboval změnit "this" na <div>(například <div>2), který je obsažen v <div>u(například <div>1) s událostí onmouseover. "This" se dá přepsat na <div>2 pomocí ID (například "text" -> text.className). Ale já ho potřebuji vyjádřit jinak než IDčkem, jelikož ID je unikátní na jedné stránce a já bych měl na jedné stránce více sérií [<div>1<div>2]. Chápeš? :'( |
||
Joker Profil |
#2 · Zasláno: 3. 6. 2011, 15:30:10 · Upravil/a: Joker
Nadan:
„Tak bych potřeboval změnit "this" na <div>(například <div>2)“ To není třeba. Chamurappiho řešení bude fungovat, s příslušným CSS a je to i lepší než to moje (jsem se nějak moc zafixoval na ten Javascript). Nastylování vnořeného <div>u jde i přes CSS (vnořený <div> by měl třídu „vnoreny“): div.zobrazit div.vnoreny{ display: block; } edit: Analogicky pro třídu schovat, HTML viz Chamurappiho příspěvek |
||
Chamurappi Profil |
#3 · Zasláno: 3. 6. 2011, 15:33:08
Reaguji na Nadana:
„Nechci totiž měnit stav <div>u, přes který projíždí kursor“ Chceš. „změnit "this" na <div>(například <div>2), který je obsažen v <div>u(například <div>1) s událostí onmouseover“ Vztah těch <div> ů ale nedokážeš slovně vyjádřit tak, aby to pochopil někdo, kdo by ti poradil, jak ho zapsat do JS. Tak si ho vyjádři sám v CSS.
|
||
Nadan Profil |
#4 · Zasláno: 4. 6. 2011, 00:47:15 · Upravil/a: Nadan
|
||
Nadan Profil |
#5 · Zasláno: 4. 6. 2011, 10:08:25
Ne, nefunguje. Zapomněl jsem, že ten <div>, ve kterém je vnořený druhý <div>, musí mít class. Pak to nějak blbne... Bohužel nerozumím, co tomu ten kód udělá, ani když ten <div> má ID místo classu, jinak bych si s tím pohrál.
mamlas.yc.cz |
||
Tori Profil |
#6 · Zasláno: 4. 6. 2011, 10:29:51
Koukněte se sem, jak se dá měnit jen jedna třída, když jich má prvek víc: Odkaz
|
||
_es Profil |
#7 · Zasláno: 4. 6. 2011, 11:29:29 · Upravil/a: _es
Nadan:
Ak prvok úplne skryješ, tak sa skryje aj ten okolitý <div> , lebo nič iné neobsahuje a potom už druhá udalosť neprebehne, viď: www.jakpsatweb.cz/css/display.html.
Zrejme ti treba asi na skrytie použiť zmenu visibility. |
||
Nadan Profil |
_es:
Hm, vyzkoušel jsem všechny varianty a nejde to... |
||
_es Profil |
#9 · Zasláno: 4. 6. 2011, 21:07:57 · Upravil/a: _es
Nadan:
Rozmysli si, kedy máš v akom elemente aké triedy a css vlastnosti definované. Ak nejakému elementu nastavíš className , tak zrušíš pôvodné nastavenie triedy.
Ak mu chceš nastaviť viac tried, tak ich oddeľ medzerami v nastavení triedy. |
||
Nadan Profil |
#10 · Zasláno: 5. 6. 2011, 12:25:02
_es:
Nechápu, co tím chceš říct... |
||
_es Profil |
#11 · Zasláno: 5. 6. 2011, 12:44:20
Nadan:
„Nechápu, co tím chceš říct...“ To, že si zrušil obrázok v pozadí aj pri onmouseover aj pri onmouseout .
|
||
Nadan Profil |
#12 · Zasláno: 5. 6. 2011, 16:14:28
_es:
Takže aby se mi nezrušil, mám mu přiřadit další třídu? To mi nepomůže, když to onmouseover a onmouseout zase přepíše, ne? |
||
Chamurappi Profil |
#13 · Zasláno: 5. 6. 2011, 16:26:09
Reaguji na Nadana:
Zkus prosím trochu přemýšlet. Potřebné informace jsi už dostal. Víš, jak se zapisuje víc tříd do atributu class , víš, jak změnit atribut class …
|
||
Nadan Profil |
#14 · Zasláno: 5. 6. 2011, 19:04:19
Chamurappi:
V tom případě jsem dementní, nenapadá mě co ještě více můžu zkusit... Když dám tomu obalovacímu <div>u více tříd, tak se mi stejně změní obě... Už 3 dny se v tom hrabu každý den a nenapadá mě řešení. Pokud ho znáš, tak mi k tomu řekni třeba více, dej mi více nápověd. Celý kód po tobě nechci (i když by to bylo nejrychlejší řešení problému). |
||
_es Profil |
#15 · Zasláno: 5. 6. 2011, 19:12:21
Nadan:
„Když dám tomu obalovacímu <div>u více tříd, tak se mi stejně změní obě“ Tak to predsa musíš zmeniť tak, aby sa ti zmenilo, len to čo chceš, aby sa zmenilo a aby zostalo to, čo má zostať. element.className = "prváTrieda druháTrieda"; |
||
Nadan Profil |
#16 · Zasláno: 5. 6. 2011, 19:34:56
_es:
Nechápu. Myslíš to takhle? HTML: <div class="prvníTřída druháTřída" onmouseover="this.className = 'zobrazit';" onmouseout="this.className = 'schovat';"> <div class="třetíTřída"> Text text text </div> </div> <div class="prvníTřída druháTřída" onmouseover="this.className = 'zobrazit';" onmouseout="this.className = 'schovat';"> <div class="třetíTřída"> Text text text </div> </div> CSS: div.prvníTřída,div.druháTřída { visibility: visible; } div.zobrazit div.třetíTřída { visibility: visible; } div.schovat div.třetíTřída { visibility: hidden; } |
||
_es Profil |
#17 · Zasláno: 5. 6. 2011, 19:42:58 · Upravil/a: _es
Nadan:
„Myslíš to takhle?“ Nie, myslím v JS kóde, presne tak, ako to tam je napísané, this je ten element, o ktorý ide.
|
||
Nadan Profil |
#18 · Zasláno: 5. 6. 2011, 19:46:24
_es:
„this.className = 'zobrazit'“ Ale co tam mám ještě dát za třídu a co k ní napsat? Když tam napíšu "třetíTřída", tak se přiřadí všem divům, i tom obalovacím, i tom v něm. To znamená, že budou úplně stejné... |
||
_es Profil |
#19 · Zasláno: 5. 6. 2011, 19:52:44 · Upravil/a: _es
Nadan:
„this.className = 'zobrazit';“ Objekt elementu, na ktorý ukazuje this , sa zobrazuje len a len podľa triedy zobrazit .
Ak chceš, aby sa zobrazoval súčasne podľa viacerých tried, tak to nastavíš: this.className = 'zobrazit preklopit roztocit rozblikat rozvibrovat'; „Ale co tam mám ještě dát za třídu“ To, čo chceš, aby tá trieda robila, napríklad zobrazovala alebo skrývala niektoré prvky vo vnútri toho elementu, na ktorý sa aplikuje. „Když tam napíšu "třetíTřída", tak se přiřadí všem divům, i tom obalovacím, i tom v něm.“ Nie, priradí sa presne len tomu elementu, na ktorý sa aplikuje. Ak sa ti zdá niečo iné, tak si zopakuj, ktoré CSS vlastnosti sa ako dedia. |
||
Nadan Profil |
#20 · Zasláno: 5. 6. 2011, 20:13:42 · Upravil/a: Nadan
_es:
> Ak chceš, aby sa zobrazoval súčasne podľa viacerých tried, tak to nastavíš: > 1 > this.className = 'zobrazit preklopit roztocit rozblikat rozvibrovat'; Nechci, aby se zobrazoval současně podle více tříd. Stačí mi jedna třída, která ho skryje/zobrazí. „To, čo chceš, aby tá trieda robila, napríklad zobrazovala alebo skrývala niektoré prvky vo vnútri toho elementu, na ktorý sa aplikuje.“ No, mám tam jednu třídu, která má ten element skrýt/zobrazit podle toho, jestli kurzor zrovna je/není na tom elementu obalujícím tento element. „Nie, priradí sa presne len tomu elementu, na ktorý sa aplikuje. Ak sa ti zdá niečo iné, tak si zopakuj, ktoré CSS vlastnosti sa ako dedia.“ Očividně se mi přiřadí k oboum divům: Ukázka. Proto mizí oba a ne jen jeden. EDIT: Drobné úpravy. |
||
_es Profil |
#21 · Zasláno: 5. 6. 2011, 20:25:02 · Upravil/a: _es
Nadan:
„Očividně se mi přiřadí k oboum divům: Ukázka. Proto mizí oba a ne jen jeden.“ Nie, priradí sa len jednému, vyskúšaj sa k tým divom dostávať z viacerých strán. Ak jeden div zmizne, tak sa v dôsledku toho môže dostať kurzor myši nad druhý, čo môže spôsobovať mylný dojem. „Nechci, aby se zobrazoval současně podle více tříd. Stačí mi jedna třída, která ho skryje/zobrazí.“ Ale chceš, máš tam atribút class="img omg" , takže logicky chceš, aby účinok týchto dvoch tried pri zobrazení a skrytí zostal. Ak má ich účinok zostať, a nastavuješ v JS className , tak musia v tom textovom reťazci v className tiež byť.
|
||
Nadan Profil |
#22 · Zasláno: 5. 6. 2011, 20:31:16
_es:
Chci, aby ten obalovací div zůstal takový jaký je, ale aby on vyvolával tu JAVASCRIPT akci (onmouseover, onmouseout), který ovlivňuje VNORENY div. Ten (div s třídou VNORENY) se má zobrazovat a skrývat. Co mám teda napsat do JAVASCRIPT událostí v obalovací divu? Kterému divu mám přiřadit kolik tříd? To je vše! |
||
Chamurappi Profil |
#23 · Zasláno: 5. 6. 2011, 20:38:10
Reaguji na Nadana:
Chceš změnit atribut class <div> u, přes který přejíždí myš. Nic víc JavaScript dělat nepotřebuje. Zobrazování/skrývání už je věcí CSS, klidně si tam dej prozatím změnu barvu, pokud tě zneviditelňování příliš rozptyluje.
|
||
Nadan Profil |
#24 · Zasláno: 5. 6. 2011, 20:41:17
Chamurappi:
„Chceš změnit atribut class <div>u, přes který přejíždí myš.“ Ne, nechci. Chci změnit class <div>u, který je vnořený v <div>u, přes který kurzor přejíždí. Jinak bych napsal onmouseover a onmouseout rovnou do toho vnořeného <div>u... |
||
Nadan Profil |
#25 · Zasláno: 5. 6. 2011, 20:49:27
Chamurappi:
To by nemělo smysl, když ten <div>, který chci skrývat/zobrazovat zabírá asi polovinu toho obalujícího <div>u... |
||
_es Profil |
#26 · Zasláno: 5. 6. 2011, 20:51:28
Nadan:
„Kterému divu mám přiřadit kolik tříd?“ Koľko ti len dovoľuje fantázia. JS vlastnosť className nastaví len presne to a nič iné, než čo nastavuje atribút class .
Ak v HTML kóde nejakému elementu prepíšeš class=trieda1 na class=trieda2 , tak sa snáď nebudeš čudovať tomu, že sa potom toho elementu trieda1 vôbec netýka. Že sa napríklad obrázkové pozadie, definované v trieda1 zruší. A presne rovnako je to aj cez JS vlastnosť className .
„Chci změnit class <div>u, který je vnořený v <div>u, přes který kurzor přejíždí.“ Keďže si nebol schopný definovať vzťah, na základe ktorého by sa na ten vnorený div dalo odkázať, tak ti Chamurappi poradil alternatívny a aj lepší a všeobecnejší postup. „Chci změnit class <div>u, který je vnořený v <div>u, přes který kurzor přejíždí.“ Nie, chceš zobraziť alebo skryť elementy vo vnútri iného elementu. A to sa dá aj cez zmenu množiny tried toho obaľovacieho elementu. |
||
Nadan Profil |
#27 · Zasláno: 5. 6. 2011, 21:03:59
_es:
„A to sa dá aj cez zmenu množiny tried toho obaľovacieho elementu.“ Ahááá! Tak v tom to celé je. Problém byl v tom, že jsem nechápal, co dělá ten kód, který Chamurappi psal na začátku. Díky za vysvětlení, už všechno běží, jak má. Děkuji všem za vaše rady a trpělivost se mnou :-) |
||
Časová prodleva: 13 let
|
0