Autor Zpráva
Joan
Profil
Nemůžu a nemůžu dát dohromady skript, který by mi zvětšoval náhledy obrázků vedle nich. Pro velkou fotogalerii to nebyl problém, obrázky byly hezky pohromadě a náhledy se procházely cyklem FOR.
Ale v nynějším problému potřebuji vnutit JavaScriptu pro každou zvětšenou fotku její vlastní umístění (aby se velká fotka zobrazovala vždy vedle náhledu, i kdyby mezi nimi bylo půl stránky textu)

Zkusila jsem skupinově fungující skript přeupravit, ale hlášku "missing; before statement" na 14.řádku neumím opravit:
<h2>Zvětšení více obrázků</h2>
<div id="fotka0"><a href="berca.jpg"><img src="berca_th.jpg" width=90 alt="Kliknutím zvětšíte"></a></div>
 <div id="umisteni0"></div><br>
 <p>Tady bude velký odstavec textu...</p>
<p>Tady bude velký odstavec textu...</p>
<p>Tady bude velký odstavec textu...</p><br>
 
 <div id="fotka1"><a href="zlatka.jpg"><img src="zlatka_th.jpg" width=90 alt="Kliknutím zvětšíte"></a></div>
 <div id="umisteni1"></div>
 
<script language="JavaScript" type="text/javascript"><!--
for (var n = 0; n<nahled.length; n++)
{
var kam[n] = document.getElementById("umisteni" +n);
var snimek = document.createElement("img");
kam.appendChild(snimek);
var nahled = document.getElementById("fotka" +n).getElementsByTagName("a");
nahled.onclick = function ()
{
snimek.src = this.href;
return false;
}
}
snimek.onclick = function()
{
snimek.style.display = "none";   
}    
//-->
</script>


Tady mám odkaz (s nefungujícím skriptem) pro představu.

Budu vděčná za menší pomoc, visím na tom už několik dní... Mnohokrát děkuji!
_es
Profil
Joan:
Príkazom var sa definuje premenná, nie prvok poľa.
Definuj premennú, ako nové pole, pred cyklom:
var kam = [];
Joan
Profil
_es:
Díky. Tak jsem přidala a mám:

var kam = [];
for (var n = 0; n<nahled.length; n++)
{
var kam[n] = document.getElementById("umisteni" +n);
var snimek = document.createElement("img");
kam.appendChild(snimek);
var nahled = document.getElementById("fotka" +n).getElementsByTagName("a");
nahled.onclick = function ()
{ ...atd.


ale stále se konzole nelíbí zvýrazněný řádek. Prý tam chybí středník ale o tom dost pochybuji.
Chamurappi
Profil
Reaguji na Joan:
Vyhoď z toho zvýrazněného řádku var, viz první _esova věta.
Joan
Profil
Chamurappi:
Aha, rozumím. Takže var může deklarovat celé pole, ale ne už jeho prvek. Smazala jsem.
Nyní mám zase "nahled is undefined". Když jsem řádky 4- 7 přesunula nahoru mezi "var kam = [];" a nad cyklus, pro změnu mám hlášku, že řádek číslo 6 není funkce. Docílím něčeho přehazováním řádků?
Joan
Profil
Přidala jsem na začátek skriptu ještě další prázdná pole, mám tam:

var kam = [];
 var nahled = [];
 var snimek = [];


a konzola je konečně spokojená. Já už méně, prootže přestože jsem opravila všechny hlášené chyby, obrázky se chovají, jakoby u nich žádný skript ani nebyl :-( . Přidala jsem i vlastnosti k snimek.style... v domnění, že třeba pozicování může pomoct, ale kdepak.
Po zkušebním vložení alertu dovnitř function se neukázalo nic, tj. vidím to tak, že k funkci se můj skript vůbec nedostane a nejhorší je, že netuším, kde hledat chybu, když údajně žádná není......

Prosím, prosím ještě o nápovědu, toto je to poslední důležité, co na svých stránkách potřebuji (= velmi chci) ještě rozběhat. Děkuji!
Chamurappi
Profil
Reaguji na Joan:
> var nahled = document.getElementById("fotka" +n).getElementsByTagName("a");
> nahled.onclick = function ()
Metoda getElementsByTagName vrací vždy kolekci elementů (tedy něco jako pole). Jestli chceš nastavovat onclick prvnímu odkazu z dané kolekce, tak ten je v nahled[0].
Joan
Profil
Chamurappi:
"Jestli chceš nastavovat onclick prvnímu odkazu z dané kolekce, tak ten je v nahled[0]"
Díky za reakci! Toto je mi náhodou zcela jasné, proto mám taky cyklus FOR začínající 0 a před funkcí
nahled[n].onclick = function() atd.    //to "n" jsem v #3 ještě neměla, vím

Ale zřejmě to nestačí, ještě něco musím změnit, aby skript chodil.

EDIT: Přidávám odkaz na nechodící skript

Další nápad: nepotřebuji na to náhodou pole polí? Tj. pole na fotky v každém DIVu, ze kterého tahám náhledy (bude tam jedna, ale taky třeba čtyři) a pole těchto DIVů? Jsem prosím na správné stopě?

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