« 1 2 »
Autor Zpráva
Nadan
Profil
Chtěl bych vědět, jestli se dá nahradit ID něčím jiným. Např. mám stránku http://narody.ic.cz/index.php?a=22
a při najetí na obrázek se mi zobrazí text. Jak zajistit, abych mohl mít na stránce více obrázků, když je ID unikátní?
PS: Nechce se mi v CSS definovat styl pro každý obrázek zvlášť.
okolojdouci
Profil *
Každý prvek může mít jednak ID, které musí být unikátní, jednak třídu (nebo dokonce více tříd), ta unikátní být nemusí. Pro některý účel se hodí jedno, pro jiný účel to druhé.
Nadan
Profil
okolojdouci:
No dobře, ale když volám Javascript funkci, tak mi nereaguje na class, jen na ID. A když chci více těchto možností spuštění funkce Javascriptu na jedné stránce, nemůžu je volat IDčkem, když je unikátní a může být jen jednou na jedné stránce, ne?
_es
Profil
Nadan:
No dobře, ale když volám Javascript funkci, tak mi nereaguje na class, jen na ID.
Tak si napíš JS funkciu reagujúcu na niečo iné ako na atribút id. Bráni ti v tom niekto? Okrem toho, potrebuješ vôbec na daný účel JS?
Nadan
Profil
_es:
A může JS funkce reagovat na class/name?
Okrem toho, potrebuješ vôbec na daný účel JS?
No, jak jinak? JS mi přišel jako nejschůdnější varianta...
_es
Profil
Nadan:
A může JS funkce reagovat na class/name?
Aká funkcia? Aký účel? Čo konkrétne sa pokúšaš riešiť?
Nadan
Profil
_es:
Onmouseover, onmouseout změna stylu jiného elementu.
_es
Profil
Nadan:
Onmouseover, onmouseout změna stylu jiného elementu.
No ale „iný element“ môžeš špecifikovať rôznym spôsobom, teda skús zrozumiteľne a dostatočne popísať, o čo sa vlastne pokúšaš.
Nadan
Profil
_es:
Mám dva divy. Div 2 je vnořený v divu 1. Při najetí na div 1 se mi zobrazí div 2 (změna stylu u divu 2 -> z display:none na display:block).
_es
Profil
Nadan:
Div 2 je vnořený v divu 1. Při najetí na div 1...
No a ešte v akom inom vzťahu je ten div2 voči div 1?
Môžeš napríklad použiť v ovládači udalosti div 1 nejaký spôsob odkazu na div 2.
Nadan
Profil
Sakra práce, já jsem vůl... Jsem zjistil, že se to dá napsat o hodně jednodušeji, bez takových šílených blbostí, co se tam snažím narvat. Nicméně díky za pomoc :-)
Witiko
Profil
Nadan:
>> „Už se nesnažte, udělal jsem si to sám. Neřeknu jak. Sbohem. Pro jistotu zamykám.“
Nadan
Profil
Witiko:
Já jsem neuzamčel téma. Vrhnul jsem se na kód a snažil se ho napsat dobře a myslel jsem, že to půjde jednodušeji. Správný kód bych poslal, ale nějak se mi nepovedl. Nevím jak na to, žádná varianta nejde...
_es:
No a ešte v akom inom vzťahu je ten div2 voči div 1?
Žádném.

Môžeš napríklad použiť v ovládači udalosti div 1 nejaký spôsob odkazu na div 2.
No, potřebuji při najetí na div1 zobrazit div 2. Přes ID to nejde, protože kdybych měl na té stránce více skupinek div1 a div2, tak při najetí na jeden div1 se mi zobrazí div2 na celé stránce. Takže zpět k problému: nevím co s tím...
Nadan
Profil
Předpokládejme, že mám kód:

HTML:
<div class="img" style="background-image: url('http://edward-vyznavac.navajo.cz/edward-vyznavac.jpg'); width: 218px; height: 250px;" onmouseover="text.style.display='block'" onmouseout="text.style.display='none'">
<div id="text">
<span class="nadpis">Eduard Vyznavač</span><br/>
Zdroj: <a href="http://navajo.cz">Navajo.cz</a>
</div>
</div>



CSS:

.img {
float: right;
margin: 10px;
padding-top: 20px;
background-repeat: no-repeat;
}

#text {
font: bold 12px "Trebuchet MS";
float: right;
background: #000011;
display: none;
text-align: right;
padding: 5px;
}

.nadpis {
font-size: 20px;
}


a chci, abych nemusel mít styl k divu text psaný přes ID.

EDIT: Drobné úpravy
_es
Profil
Nadan:
„No a ešte v akom inom vzťahu je ten div2 voči div 1?“
Žádném.
No a ako chceš potom identifikovať ten div2, ak je je v tom div1 vnorených tých divov trebárs 1 000?
Nadan
Profil
_es:
Ehm, cože? div2 má id=text a div1 má class=img. Mrkni se na ten kód, co jsem poslal.
_es
Profil
Nadan:
div2 má id=text
No a čo ti teda bráni použiť metódu document.getElementById?

Asi je problém, že chceš použiť jedno id viac krát na stránke, čo samozrejme nejde. Predpokladám, že odpoveď „Žádném.“ na otázku „No a ešte v akom inom vzťahu je ten div2 voči div 1?“ nie je pravdivá, alebo sa dá kód upraviť tak, aby pravdivá nebola, a ak ten vzťah napíšeš, tak bude aj jednoduchá odpoveď.
Nadan
Profil
_es:
Asi je problém, že chceš použiť jedno id viac krát na stránke, čo samozrejme nejde. Predpokladám, že odpoveď ‚Žádném.‘ na otázku ‚No a ešte v akom inom vzťahu je ten div2 voči div 1?‘ nie je pravdivá, alebo sa dá kód upraviť tak, aby pravdivá nebola, a ak ten vzťah napíšeš, tak bude aj jednoduchá odpoveď.

Pořád nechápu, co se tím snažíš říct. Div 1 a 2 mají společné jen to, že div 2 je vnořený do divu 1. V žádném jiném vztahu nejsou...

No a čo ti teda bráni použiť metódu document.getElementById?
Nikdy jsem s ním nepracoval, nevím jak ho použít.
_es
Profil
Nadan:
Nikdy jsem s ním nepracoval, nevím jak ho použít.

V JS nájde element s daným id. To predsa treba či nie? No dané id by malo byť v dokumente len jedno.

Pořád nechápu, co se tím snažíš říct. Div 1 a 2 mají společné jen to, že div 2 je vnořený do divu 1. V žádném jiném vztahu nejsou...
Nie je to prvý vnorený div do div1 - napríklad?
Joker
Profil
Nadan:
Nikdy jsem s ním nepracoval, nevím jak ho použít.
Neboli „Jsem líný“?

Jenže jak jsem pochopil, problém je právě v tom, že přes ID to tak snadné nebude, jelikož těch obrázků musí být víc.

Další problém:
„No a ešte v akom inom vzťahu je ten div2 voči div 1?“
Žádném.
Spíš to znamená „Nevím v jakém by měly být“.

Ale už jsme se alespoň dobrali zadání:
Je <div> který má onmouseover-onmouseout a má zobrazovat/skrývat jiný <div>, který je uvnitř
Možností je více, například:
Id musí být unikátní, tak dát hlavnímu <div>u nějaké Id, třeba "img123" a tomu vnitřnímu odvozené, třeba "img123_text". Pak by to bylo nějak:
document.getElementById(id + "_text")
(edit: id = id toho hlavního <div>u)

Další možnost je dát tomu vnitřnímu <div>u nějakou třídu a použít getElementsByClassName (pro některé prohlížeče nutno doprogramovat, na webu se příkladů válí spousta).

Mimochodem:
<span class="nadpis">Egyptské pyramidy v Gize</span><br/>
Fuj. Na nadpisy je <h1>-<h6> a nebude ani nutné z inline prvku dělat „blokový“ přes odřádkování.
_es
Profil
Joker:
Mimochodem:
<span class="nadpis">Egyptské pyramidy v Gize</span><br/>
Fuj.
A čo ešte: <div class="img" style="background-image: url(
Na obrázky je značka <img>.

Nadan:
V ovládači udalosti sa na prvý vnorený element odkážeš cez výraz this.firstChild a na posledný vnorený cez this.lastChild. No musíš po <div> a pred </div> odstrániť zalomenia riadka.
Joker
Profil
_es:
Jinak ta stránka má připojený framework Prototype, takže to getElementsByClassName by se nemuselo až tak řešit:
<div onmouseover="$(this).select('.text').show()" onmouseout="$(this).select('.text').hide()">
<div class="text">Skrývací text</div>
</div>
A mělo by to být.
(Poznámka, jestli to takhle nefunguje, tak se omlouvám, s Prototype nemám moc zkušeností)
Nadan
Profil
Joker:
„Nikdy jsem s ním nepracoval, nevím jak ho použít.“
Neboli „Jsem líný“?
Ne. Znamená to, že tomu nerozumím a neumím s tím, tak vás prosím o radu, protože jinde na internetu jsem nenašel lepší pomoc.

<span class="nadpis">Egyptské pyramidy v Gize</span><br/>
Fuj. Na nadpisy je <h1>-<h6> a nebude ani nutné z inline prvku dělat „blokový“ přes odřádkování.

To je jen dočasné řešení, nechtěl jsem tam psát h4, musel bych ho zase kódovat zpět, kdyby to nešlo.

_es:
A čo ešte: <div class="img" style="background-image: url(
Na obrázky je značka <img>.

Ale ty jsi v tom případě vůbec nepochopil o co mi jde. Kdybych tam měl <img> a ne obrázek na pozadí <div>u, tak tam nemůžu vložit text přes obrázek!

Joker:
A mělo by to být.
Ok, díky, zkusím.
Nadan
Profil
Joker:
Tak ne, nejde to. Už mě nenapadá, co s tím dál, ani na internetu nemůžu najít schůdné řešení. Vykašlu se asi na to a budu psát za každý obrázek na stránce nové ID do CSSka...
_es
Profil
Nadan:
Tak ne, nejde to.
Nejde čo?
Nepokúšaš sa stále používať duplicitné id, alebo áno?
Nadan
Profil
_es:
Hele, ty vůbec nevíš o co se tady snažím, že?
Chamurappi
Profil
Reaguji na Nadana:
Není sám.

Pokud chceš nějak měnit stav <div>u, přes který přijíždí kurzor, stačí ti primitivní změna třídy:
<div onmouseover="this.className = 'zobrazit';" onmouseout="this.className = 'schovat';">
… při najetí se tomuto elementu nastavít třída zobrazit, při odjetí schovat. Co tyto třídy způsobí, to už si zařiď v CSS.
Nadan
Profil
Chamurappi:
Díky moc, přesně to jsem potřeboval! :-) Díky moc!!!
_es
Profil
Chamurappi:
this.element.className
Tomu nerozumiem. Čo je tá vlastnosť element?
Chamurappi
Profil
Reaguji na _es:
Pardon. Dneska píšu všude blbosti :-)
Opraveno.

Nadanovi doporučuji neděkovat předčasně.
« 1 2 »

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:

0