[ dragan_bg_88 @ 15.01.2010. 00:14 ] @
Pozdrav ljudi,
pocetnik sam u javascript-u ali ne i u programiranju. imam problem sa setTimeout, pozovem funkciju pri pokretanju stranice u njoj nesto odradim i opet pozovem setTimeout i tako treba stalno da se vrti u krug ta ista funkcija... Kod je mnogo slozeniji ali kad sam video da ni ovo ne radi poludeo sam... skinuo sam neki sat koji radi na istom principu, a princip je da iz same funkcije pozivamo setTimeout, prosto i jednostavno...

Code:

var i = 1;
function changeImage(i) {
    if (i == 1) {
        i = 2;
    }
    else
    if (i == 2) {
        i = 3;
    }
    else
    if (i == 3) {
        i = 1;
    }
    document.getElementById("actTime").innerHTML = i;
    setTimeout("changeImage(i)", 3000);
}
setTimeout("changeImage(i)", 3000);


ovo bi trebalo da u nekom <div> ispisuje ove brojeve, to sam za probu uzeo da se uverim da ne radi kao sto ni ne radi... ispise broj 2, sto znaci da udje jednom u changeImage i tu stane... zasto? ima li neko objasnjenje...
inace hitno je pa bi mi znacio neki brz odgovor...

Unapred hvala...
[ programer.master @ 15.01.2010. 15:17 ] @
Nemozes tako da prosledjujes i..uvek je dva tj izvrsava se ova
funkcija na 3sec al nije dobro prosledjivanje argumenta..
izbaci iz changeImage(i) ovo i-malo
i u samoj funkciji napisi i++; tj iza ove linije
setTimeout("changeImage(i)", 3000);

pozz




2010/1/15 dragan_bg_88 :
> Pozdrav ljudi, pocetnik sam u javascript-u ali ne i u programiranju. imam
> problem sa setTimeout, pozovem funkciju pri pokretanju stranice u njoj nesto
> odradim i opet pozovem setTimeout i tako treba stalno da se vrti u krug ta
> ista funkcija... Kod je mnogo slozeniji ali kad sam video da ni ovo ne radi
> poludeo sam... skinuo sam neki sat koji radi na istom principu, a princip je
> da iz same funkcije pozivamo setTimeout, prosto i jednostavno...
>
>
>
> ovo bi trebalo da u nekom ispisuje ove brojeve, to sam za probu uzeo
> da se uverim da ne radi kao sto ni ne radi... ispise broj 2, sto znaci da
> udje jednom u changeImage i tu stane... zasto? ima li neko objasnjenje...
> inace hitno je pa bi mi znacio neki brz odgovor...
>
> Unapred hvala...
>
> --
> http://www.elitesecurity.org/p2493233
>
> Prijave/odjave: http://www.elitesecurity.org/liste
>
> Deaktivirajte rich-text formatiranje u svom mail klijentu ili webmailu kada
> odgovarate na poruku. Ne menjajte sledece dve linije ukoliko odgovarate
> putem emaila!
> esauth:388004:1fe20d2695dfe7742feb323e0c18b7e1
>
[ 357_97 @ 17.01.2010. 18:46 ] @
Da se nadovezem na prethodni odgovor, moze to i krace
Code:
var i = 1;

function changeImage() {
    document.getElementById("content").innerHTML = i;
    i = (i != 3) ? ++i : 1;
    setTimeout("changeImage()", 3000);
}

changeImage();

Posto si pocetnik obrati paznju na to da je promenljiva 'i' globalna promenljiva!
[ Aleksandar Ružičić @ 18.01.2010. 18:44 ] @
nacin koji ja preporucujem (jer eval iz evil*):
Code:

function changeImage(i) {
    i = i > 3 ? 1 : (i < 1 ? 3 : i);

    document.getElementById("content").innerHTML = i;

    setTimeout(function() {
        changeImage(i + 1);
    }, 3000);
}

changeImage(1);



* a setTimeout("...", 3000); koristi eval da izvrsi izraz u navodnicima
[ VladaSu @ 21.01.2010. 17:52 ] @
Problem ti je sto javascript nece u stringu prepoznati promenljivu kao php.

setTimeout("changeImage(i)", 3000); // kako da zna da je ovo i promenljiva?

setTimeout("changeImage("+i+)", 3000);