Autor Zpráva
doveda
Profil
ahoj, už se s tím mořím celé odpoledne a nic .... poraďte prosím
Chci, aby se mi postupně vypisovalo zvětšované číslo se zpožděním 2 sec. Asi by to šlo i jinak než cyklem for, ale já to v něm nutně potřebuju.

Co mám na tom mým zápisu zvoranýho že to nefunguje????????????

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>
<head>

<script>
<!--

var k=1;

function ahoj() {
 document.all.nazev.innerHTML=k;
}


function cyklus() {
for(k;k<51;k++) setTimeout("ahoj()",2000);
     
}

// -->
</SCRIPT>

</head>
<body >
<input  type="button" value="SPUSTIT" onClick="cyklus();" > 
<p id="nazev" >0</p>

</body>
</html>
Chamurappi
Profil
Reaguji na dovedu:
Na řádku 12 používáš proměnnou k1, která neexistuje. Proto ten kód vůbec nefunguje. Kdyby fungoval, tak po sekundě nastaví do onoho elementu číslo 50, protože všechny timeouty načasováváš na sekundu.
Jinak je na tvém kódu víc věcí, které by se měly upravit.
Darkry
Profil
var k = 0;

function zvys() {
   k++;
   alert(k);
}

setTimeout("zvys()",2000);
doveda
Profil
Darkry:
jj. to k1 jsem přehlíd, už je to opravený
ten zbytek jak posíláš jdu hned vyzkoušet ..... díkes
Witiko
Profil
Darkry:
setTimeout("zvys()",2000);
Ono to tedy fungovat bude, ale nejedná se o nejčistší programátorskou techniku. Spíše než na řetězec s kódem, který si bude prohlížeč muset zkompilovat, bych odkazoval bych přímo na funkci - setTimeout(zvys, 2000);. Reálně to také poběží mnohem rychleji, více informací zde.

Další možnosti řešení:
Cyklus s lexikální uzávěrou:
var i = 0;
while(i !== 51) (function(i) {
  setTimeout(function() {
    alert(i);
  }, i * 2000);
})(i++);

Sebevražedný setInterval:
var i = 0, interval = setInterval(function() {
  alert(i); if(++i === 51) clearInterval(interval);
}, 2000);
doveda
Profil
Witiko:
díkes

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: