Autor Zpráva
Luxx
Profil *
Ahojky, sleduji témata na fotogalerie - proto by jsem se chtěl tomuto tématu věnovat úplně od základu až po vytvoření jednoduché, plně funkční fotogalerie, proto prosím všechny kdo má zájem o toto téma, ať se připojí do této diskuze.

Začneme od začátku - v html vytvořím tabulku, do které vložím miniatury obrázků. Následně na stránce vedle tabulky vytvořím
div
, který bude zobrazovat "zvětšenou verzi" miniatur.

Teď se budu věnovat tlačítkům: další foto, přechozí foto - jak na to?
Luxx
Profil *
vytvořil jsem:
javascript:

<SCRIPT Language="JavaScript">
<!--
 
obrazek = 1;
pocetobrazku = 18;

// Nastaveni aktualniho obrazku

function aktualniobrazek ()
{
document.images.imgprev.src = obrazek+".jpg";
//Nastaveni cisla obrazku
document.slide.PicNum.value = obrazek;
}

//Nasledujici obrazek
function dlasiobrazek () 
{
if (obrazek == pocetobrazku) obrazek = 1;
else obrazek++;
aktualniobrazek ();
}

}
</SCRIPT>


a HTML:

<a href="#" onclick="dlasiobrazek ()">Next &gt;&gt;</a>

Proč to nenačítá další obrázek? Děkuji
Petr Wudi
Profil
No, třeba u podmínky dole nejsou závorky {}. Já jsem teď spáchal toto. (funkčnost neověřována, je to jen pro inspiraci)

Javascript:
var cislo = 1;
var adresa ="";
var adresy = new Array("fotka.jpg", "obrazek.jpg", "rozmazanej-flek,jpg" ); //Všechny adresy fotek
function dalsi(){
 if (cislo < počet fotek, v tomto případě 3){ //podmínka aby se neměnily fotky i když už jsme všechny prohlédli
  adresa = adresy[cislo - 1] //do proměnné „adresa“ se načte konkrétní jedna adresa
 };
}
document.getElementById("nahled").src = adresa; //zdroj obrázku se změní na to, co je v proměnné adresa
cislo++; // číslo se zvětší o 1

HTML
<div id="nahled"></div> (to je ten div se zvětšenou verzí)
<a href="javascript:dalsi()">Další</a>


Mimochodem, proč se ptáš, když jsi na to částečně přišel sám?
Luxx
Profil *
Nemůžu přijít co mám na tom scriptu špatně - snažím se to doladit, ale pořád mi to neběží - nemůžu přijít na chybku víš?
Petr Wudi
Profil
Zkoušel jsem ti to trochu poupravit a toto fungovalo:
var obrazek = 1;
var pocetobrazku = 18;

function aktualniobrazek(){
alert(obrazek);
}

function dlasiobrazek(){
alert(obrazek);
if (obrazek == pocetobrazku) {obrazek = 1;}
else {obrazek++;
aktualniobrazek();}

} 
yFang
Profil
Na co tam máte funkci aktualniobrazek(), proč to nemůže být rovnou součást funkce dalsiobrazek()?
Luxx
Profil *
Petr Wudi:
Vyskakuje mi alert s čísly, místo obrázků - má to tak dělat?

yFang:
Jak by se to dalo zprcovat aby to bylo součástí f-ce?
yFang
Profil
Zjednodušil bych to na tohle:
function dlasiobrazek () 
{
    if (obrazek == pocetobrazku) obrazek = 1;
    else obrazek++;
    document.images.imgprev.src = obrazek+".jpg";
}
Luxx
Profil *
Script počítá správně - na základě ověření alert, akorát v divu nezobrazuje obrázky proč?
yFang
Profil
Luxx:
Dej nejlépe živou ukázku, takhle to je jako kdybych napsal: Motor funguje dobře, ale nejde otočit volantem, proč?
Luxx
Profil *
oki posíám ukázku:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<link rel="stylesheet" type="text/css" media="screen" />

<title>Fotogalerie</title>

<SCRIPT Language="JavaScript">
<!--
 
var obrazek = 1; //aktualni foto
var pocetobrazku = 18; // pocet fotek

// Nastaveni aktualniho obrazku

function aktualniobrazek ()
{
document.images.imgprev.src = obrazek+".jpg";
//Nastaveni cisla obrazku
document.slide.PicNum.value = obrazek;
}

//Nasledujici obrazek
function dlasiobrazek()

{
    if (obrazek == pocetobrazku) obrazek = 1;
    else obrazek++;
    document.images.imgprev.src = obrazek+".jpg";
} 



</SCRIPT>


<img Src="obrazek111.JPG" Name="imgprev" id="obr">

Luxx
Profil *
V mozile to nereaguje, v IE to jakokdyby načetlo prázdný obrázek. Mohlo by to být špatně nastavenou cestou?
Petr Wudi
Profil
Alert je tam proto, že jsem s ním testoval funkčnost a zapomněl smazat. A kompletní funkční zmenšený kód by tedy vypadal takto:
var obrazek = 1;
var pocetobrazku = 18;

function dlasiobrazek(){
  if (obrazek == pocetobrazku) {obrazek = 1;}
  else {obrazek++;
  document.images.imgprev.src = obrazek+".jpg";}
} 

A to už MUSÍ fungovat. Jinak je nějaký problém v HTML nebo mezi počítačem a židlí.
yFang
Profil
Luxx:
No dobře, ale ty máš funkci která předpokládá názvy obrázků 1.jpg - 18.jpg a najednou tam máš obrazek111.jpg.
A zajímalo by mě na co tam je ta funkce aktualniobrazek().
Luxx
Profil *
Aha, takže je možné že bude problém v tom když se obrázky jmenují jinak? než 1.jpg - 18.jpg?
Petr Wudi
Profil
No to určitě je.
Luxx
Profil *
Přejmenoval jsem všechny obrazky na 1-18.jpg, znovu nahrál na server, ale stale když zavolam funci
dlasiobrazek()
mi to zobrazí prázdné okno - jako by to ten obrázek nenašlo, včem ještě může být chyba?
Luxx
Profil *
oka - už sem na to přišel - bylo to špatně zadanou cestou u
document.images.imgprev.src = obrazek+".jpg";
, bylo tam potřeba zadat ješte:
document.images.imgprev.src ="WEBOVA ADREA" +obrazek+".jpg";
- DÍKY
Petr Wudi
Profil
Možná tím, že javascript se nerozhoduje podle name ale id. Takže do <img Src="obrazek111.JPG" Name="imgprev" id="obr">
dej id="imgprev". A mohlo by se to rozchodit.
A pak tu taky máme takový těžko zjistitelný chyby jako JPG/jpg apod
Luxx
Profil *
Ano, je potřeba načítat specifickou příponu.


Mám další dotaz - jakým způsobem docílit aby, když kliknu na jakoukoliv miniaturu - mi zmizely miniatury a misto toho se otevřela do divu na stejne stránce zvětšená velikost klikuté miniatury ? Děkuji

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