Autor Zpráva
Joan
Profil
Zdravím vás,
mám na stránce pro příklad tři skupiny náhledů, jejichž zvětšeniny chci zobrazovat vpravo VEDLE této skupiny. Tu je názorná ukázka.
Mým cílem je zobrazit velké obrázky A1, A2 vedle náhledů A1, A2, velké obrázky B1 - B4 vedle náhledů B1 - B4 atd. Pod každým blokem (s náhledy typu A, B, C) mám DIV s identifikátorem, ve kterém chci zvětšeniny zobrazovat a který si už napozicuji. Problém mi činí to, že chybu mi to nehlásí žádnou, ale zvětšeniny se mi stále cpou do posledního DIVu, varianta se SWITCH nezabrala.
Dá se to snad přirovnat k pexesu, kdy se mají otevírat dva obrázky vedle sebe a pak kliknutím na každý zase zavřít.
Domnívám se, že je to záležitost pole náhledů v každém bloku a taky pole těchto bloků, tj. pole polí. Jsem daleko od pravdy?
Když odstraním ten poslední DIV s id="tady3", tak
kam[k].appendChild(snimek)

získá hodnotu NULL a já nevím proč. Zobrazení proběhne do předchozího DIVu s id="tady2", ale to vůbec není to, co potřebuji.

Prozatím to mám na stránkách ukotvené pomocí position: fixed, aby se obrázky zobrazovaly aspoň v dosahu okna, ale není to ono nejen na malých monitorech, kde se pevně zobrazí půlka obrázku orientovaného na výšku a nejde s ním (logicky) scrollovat.
Budu moc vděčná, když mě někdo popostrčí, děkuji!
josefadamcik
Profil
Joan:
Základní chybka je v tom, že si vytvoříš jeden snimek
var snimek = document.createElement("img");


a pak ho ve smyčce přirazuješ pomocí appendChild k různým elementům.
for (var k = 1; k < 4; k++)   //pocet bloku na strance, odkud beru nahledy
{ 
  kam[k] = document.getElementById("tady"+k);
  kam[k].appendChild(snimek);  
  ...


Jeden DOM objekt (v tvém případě snímek) může být zahrnut v modelu dokumentu pouze jednou. Takže appendChild element vždy přesune (odebere z minulého rodiče a přidá do nového). Proto máš obrázek nakonec až v posledním elementu.

Buď si vytvoř pro každý obrázek vlastní element snímku, nebo použij jeden ale "přehazuj" si ho pomocí appenChild až ve chvíli kdy má být zobrazen. Existují samozřejmě i další řešení, ale tohle by mohlo být nejrychleší.
Joan
Profil
josefadamcik:
Vřelé díky, má to logiku. Napřed zapracuju sama a uvidím :-)

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