Autor Zpráva
Sante
Profil *
Nevím, kde je zakopaný pes, asi v tom, že JS tolik neovládám, dělám si takovou galerii pomocí JS a narazil jsem na problém. Po načtení obrázku, se volá funkce, která zajistí změnu rozměů podle toho jak jsou definovaný (seznam generuje PHP) (je to hlavne pro pripad obrázků navýšku a našířku). Ve FF bez problému, v IE, když se obrázky načítají poprvé, tak též ok, ale když jsou pak v cachei, tak se někdy změna rozměrů neprovede, ale ta funkce je určitě volaná. Myslel jsem, že jsem dám kvůli přehlednosti jen čísti kódu, ale nakonec ho sem dám celý, už si s tím hraju dlouho, tak budu moc rád, když mi poradíte..


<script>
obrazky = new Array(
new Array("../files/pokus/1.JPG","","518","690","808","1134"),
new Array("../files/pokus/2.JPG","","920","690","1064","878"),
new Array("../files/pokus/3.JPG","","518","690","808","1134"),
new Array("../files/pokus/4.jpg","","640","480","680","590"),
new Array("../files/pokus/5.jpg","","480","640","520","750"),
new Array("../files/pokus/6.JPG","","920","690","1064","878"),
new Array("../files/pokus/7.JPG","","518","690","640","910"),
new Array("../files/pokus/8.JPG","","800","600","840","710"),
new Array("../image/konec_prezentace.jpg","konec prezentace","500","500","500","500")
);
var ob = 0;var celkem = obrazky.length;
var celkem1 = celkem -1;
var celkem2 = celkem -2;

function predchozi(ob) {
document.images['obrazek'].src=obrazky[ob-1][0],
window.document.getElementById('popis').innerHTML=obrazky[ob-1][1],
window.document.getElementById('ob').innerHTML=ob;
}

function dalsi(ob) {
document.images['obrazek'].src=obrazky[ob+1][0],
window.document.getElementById('popis').innerHTML=obrazky[ob+1][1],
window.document.getElementById('ob').innerHTML=ob+2;
}

function rozmer(ob) {
document.images[0].height=obrazky[ob][3],
document.images[0].width=obrazky[ob][2];
}

function navigace(ob) {
if (ob <= 0) {
window.document.getElementById('pred').innerHTML=" ";
}
else {
window.document.getElementById('pred').innerHTML="&laquo; predchozi";
}

if (ob >= celkem2) {
window.document.getElementById('dalsi').innerHTML=" ";
}
else {
window.document.getElementById('dalsi').innerHTML="další &raquo;";
}
}


document.write ("<br/> <a href="#" id="pred" onClick="predchozi(ob), ob--, navigace(ob); return false"></a>");
document.write (" _ _ fotka <span id="ob">1</span> z "+celkem1+" _ _ ");
document.write ("<a href="#" id="dalsi" onClick="dalsi(ob), ob++, navigace(ob); return false">další &raquo;</a><br/> ");

document.write ("<br/> <a href="javascript:window.close();"><img name="obrazek" style="z-index: 1;" src="../files/pokus/1.JPG" width="518" height="690" alt="Kliknutím okno zavřete" title="Kliknutím okno zavřete" onload="rozmer(ob)"/></a>");
document.write ("<br/>");
document.write ("<span id="popis"></span> <br/>");
peta
Profil
Sante
a zbytek prikladu?
nejlepe odkaz na stranku?
a co ti pise za chybu JS konzola IE/FF/O?
Verze IE?

Treba u IE7 jsem zaznamenal problemy s elemety. Kdyz vytvorim nejaky element pres appendChild, tak mi jej neuvazuje do te doby nez jej dam do innerHTML. Zatim jsem jeste nezjistil proc. Pokud si tuhle chybu MS neopravi, tak IE7 je zrejme posleni verzi, ktera vznikla.
Cili je mozne, ze to neumi z nejake priciny pracovat s "dalsi"

Tady mi treba chyby spousteni funkce onload? To mas kde? Neni kod, neni odkaz, nelze spustit ou sebe a najit chybu.

---
onClick="dalsi(ob), ob++, navigace(ob); return false
A tohle je zase co? prikazy, jak v PHP, tak v JS se oddeluji strednikem, pokud vim. Kde beres carku?
Sante
Profil *
jo, já říkal, že v tom mám trochu zmatek, omlouvám se za tyto začátečnické chyby, nicméně, těmi čárkami to není. Konzola FF (FF1,5) nepíše žádnou chybu a v něm ten script funguje jak si představuju. V IE, mám 7, se při prvním požadavku na obrázek, když se ten načítá se serveru, chivá vše též dobře, ale pak, když jsou ty obrázky už stáhnuté, a třeba se k němu vrací, tak už se velikost toho obrázku nezmění, jak má. V Opeře zdá se že taky vše ok.

Pokusil jsem se vytáhnout část kódu a lze tu galerii vidět zde: http://pavelps.wz.cz/problem2/ (je to bez css, ale snad se v tom trochu vyznáte.

A nechápu, jak je myšleno. že chybí spuštění funkce onload, ta je volána o toho img
peta
Profil
Sante
- ja teda nevim, ale kliknu na foto a ve FF mam plnou JS konzolu chyb.
- pri nacteni stranky http://pavelps.wz.cz/problem2/ ale zadnou, zajimave

v IE6 to funguje uplne stejne jako ve FF. jen to nehlasi chyby. A je to nalepene na levem okraji. (coz ale nema vliv na funkci)
- v IE7 je to tez nalepene na leem okraji, pri nacteni JS konzola nic nehlasi a zobrazovani obrazku funguje. Takze nechapu...
Sante
Profil *
Peta
Tak to je divné, já v JS konzoli nic nevidim. To že jsou ty miniuatury nalepené vlevo, ja způsobeno chybějícím css, to teď ale opravdu nehraje roli.

Když si v IE klikneš na jakoukoli miniaturu, otevře se Ti šedivé okno (se stránkou /pro první foto/) s fotkou a když si dáš "další" a "další", tak vše funguje správně, ale když si pak dáš zpět, tak se dost často stane, že se nezmění rozměry obrázku, nechají si rozměry obrázku předešlého. A to samé dělá i když si otevřeš poslední miniaturu, odklikáš "předchozí", vše ok, a pak dáš "další", tak se opět nepřepíší rozměry.

Myslíš že celý JS je postavený špatně, že bych měl udělat jiný princip? A nemáš odkaz na nějaký příklad, kde bych se inspiroval? Díky za trpělivost!
zdeněk
Profil *
Mám podobnou fotogalerii na adrese velokokorin.info/foto.html
a funguje mi snad bez problémů.
Sante
Profil *
Zdeněk
Děkuju, už jsem si to podle tebe upravil, měls to proti mě hodně učesané, a zdá se, že to funguje! Ten trik s tim image.style.visibility = 'hidden'; je hodně nápaditej

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