Kde je chyba? (javascript)

Programovacie jazyky, rady, poradňa...
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Kde je chyba? (javascript)

Príspevok od používateľa atlox »

Zdravím chalani.

PLS poraďte mi, kde je v tomto scripte chyba. Ma to len jednoducho vypisovať dodnotu každých 500 milisekund:

Kód: Vybrať všetko

<html>
<head>
<script language="javascript" type="text/javascript">
function zobraz(hodnota, id) { 
  document.getElementById(id).innerHTML = hodnota;
}

function spust() {
  for (i=0;i<=100;i++) {
    window.setTimeout("zobraz('"+i+"','divko')",500); 
  }
}
</script>
</head>

<body>
<a href="javascript:spust();">spust</a>
<div id="divko"></div>
</body>
</html>
Kurnik a nefunguje to :cry: vypíše mi len rovno 100.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

skusim popisat co tam vidim: v cykle for (ktory prebehne velmi velmi rychlo) nastavis 100 akcii ktore sa maju vykonat o 0.5 sekundy neskor .... a ony sa aj vykonaju o 0.5 sekundy neskor ako si ich nastavil ... a kedze si ich nastavil v podstate v rovnakom case ( = rychlo prebehnuvsi cyklus for) tak sa aj vykonaju v podstate rovnakom case (resp velmi kratkom case) a ty uvidis vysledok poslednej z nich ...

chapes?

malo by to byt nejak takto

Kód: Vybrať všetko

<script language="javascript" type="text/javascript"> 
function zobraz(hodnota, id) { 
  document.getElementById(id).innerHTML = hodnota; 

  window.setTimeout("zobraz('"+(hodnota+1)+"','"+id+"')",500);
} 

function spust() { 
    window.setTimeout("zobraz('1','divko')",500); 
} 
</script>
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

:D no tak tomu som trošku porozumel no. Idem to vyskúšať, ale každopádne ti ďakujem ;)

EDIT:// Počuj tvoj script funguje, len v ňom trebalo odstrániť apostrofy pred a za hodnotou (chcel som to ako počítadlo) len vtip je v tom, že to bude počítať donekonečna a mne to trebalo do 100 (ako 100%)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

spust() a zobraz() robia prakticky to isté, preto je ti funkcia spust() zbytočná (spustiť to môžeš práve tým zobrazením, rovnako sa nastaví timer)
to aby to rátalo iba do 100 môžeš ošetriť v podmienke:

Kód: Vybrať všetko

<script>
var timerID = 0;

function zobraz(hodnota, id) {
  document.getElementById(id).innerHTML = hodnota;
  if(hodnota==100){    
        clearTimeout(timerID);
        timerID  = 0;
    } else timerID = setTimeout("zobraz('"+(hodnota+1)+"','"+id+"')",500);
} 
</script>
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

no dobre ... neprepracoval som to do uplnych malickosti :roll:
islo mi o vysvetlenie principu ...
to kazdemu treba vzdy napisat kod presne do bodky? to je take tazke daco aj sam domysliet?

//audiotrack: áno, treba. Nič si z toho nerob, časom si zvykneš ako som si zvykol aj ja. :P
Napísať odpoveď