Autor Zpráva
Nich
Profil
Mám tento javascript:

function dal() 
{
   //Uživatel je tu poprvé
    if(show == null) {var show = 1; }
   //Počet obrázků
   var max = <?php echo $_SESSION['max'] ?>;
   //Další obrázek
   var show = show + 1;
   //Pokud není další obrázek, vrátím se na začátek
   if(show > max) {show = 1;}
   //Změna
   document.images['obr'].src='/images/obr_'+show+'.jpg';   
}


Problém je v tom, že mi to vždycky projde tou první podmínkou takže je proměnná show pořád nastavená na 1 --> takže se sice dostanu z prvního obrázku na druhý, ale na třetí už ne :-(
Pan X
Profil
Nich:
Pokud se nepletu v Javascriptu prázdná poměná nemá hodnotu null pokud není ještě deklarovaná bude mít undefined

 if(show == undefined)
- popřípadě něco jiného, podle toho jak to máš nastavené
Nich
Profil
Pan X:
no tak to undefined nepomohlo ... ja právě nevím čemu se rovná nedefinovaná proměnná bez žádné hodnoty, takže to nemůžu ani ověřovat :-(
_es
Profil
Nich:
Skús zrozumiteľne a podrobne vysvetliť, o čo sa pokúšaš, s odkazom na stránku.
Z toho tvojho kódu a popisu to nepochopí asi nikto.

Pan X:
pokud není ještě deklarovaná bude mít undefined
To áno, no zároveň platí, že null == undefined, takže tá zmena nebude mať žiadny vplyv.
Nich
Profil
_es:
Dělám to na localhostu takže link nedám, ale vysvětlit můžu určitě (;

Takže na stránce mám obrázek a pomocí dvou šipek (doleva, doprava) chci, aby se tento obrázek změnil. Obrázky jsou 4. Po kliknutí na šipku se přejde na další nebo se vratím na ten co tam byl (to záleží na šipce).

Měl sem to udělané přes PHP, ale nelíbilo se mi to kvůli nutnosti načítání celé stránky, takže jsem chtěl zapojit javascript.


Tohle je teda onen obrázek:

<img src='images/obr_1.jpg' name='obr' />


Pod obrázkem mám dvě tlačítka:

<input type="submit" value="" name='dal' id='dopravaa' class='sipka' alt="" onclick="dal()" />
<input type="submit" value="" name='zpet' id='dolevaa' class='sipka' alt="" onclick="zpet()" />


Potom php script, který mi zjistí kolik mám ve složce obrázků:

         //Zjistí se počet slidů pro zobrazení
         if($_SESSION['max'] == "") { 
              function pocett($directory='.')
                {
                 return count(glob($directory."/images/obr_*.jpg"));
                }
              $_SESSION['max'] = pocett();
         }


No a nakonec js (je to zatím jen funkce na šipku doprava):

function dal() 
{
   //Uživatel je tu poprvé ---> proměnná show představuje číslo aktuálního obrázku (pokud je tu uživatel poprvé tak je to "obr_1.jpg"
    if(show == null) {var show = 1; }
   //Počet obrázků
   var max = <?php echo $_SESSION['max'] ?>;
   //Další obrázek ---> zvětšujeme proměnou show o 1 tzn. další obrázek bude "obr_2.jpg"
   var show = show + 1;
   //Pokud není další obrázek, vrátím se na začátek ---> tato podmínka nastane pokud bude show = 5 , obrázky mám zatím jen 4 tzn. že se vracím na první obrázek
   if(show > max) {show = 1;}
   //Změna ---> no a tady to by mělo způsobit změnu onného obrázku
   document.images['obr'].src='/images/obr_'+show+'.jpg';   
}


No a problém je v tom, že
if(show == null)
vždy vyhodí TRUE, takže se nemůžu vlastně dostat za druhý obrázek...
_es
Profil
Premenná show je lokálna premenná funkcie dal.
Preto je jej hodnota vo funkcii na začiatku a pri každom zavolaní funkcie undefined.
Asi si chcel použiť globálnu premennú:
1) Niekde mimo funkcie, ešte pred funkciu dal, pridaj príkaz: var show=1;
2) Odstráň 4. riadok.
3) Z 8. riadku odstráň var .
Nich
Profil
_es:
super, moc díky, nedošlo mi, že potřebuju tu globální proměnnou (;

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