Autor Zpráva
Rararach
Profil *
Ahoj. Má to vypsat 10x ahoj a při 8. opakování pak: Máš to skoro hotové - ale nedaří se.
Myslím že to neumím správně vnořit, možná to chce jiný příkaz, ale zatím se to učím. Díky moc.

<p id="zap" onclick="zapni()">Zapni to !!</p>
<p id="vysl">...</p>

<script> 
function zapni(){
for (var a = 1; a <=10 ; a++) {
    (function(index) {
        setTimeout(function() { document.getElementById("zap").innerHTML+= "ahoj, ";}, a * 500);})(a);}

if(a>7){document.getElementById("vysl").innerHTML="Už máš skoro hotovo";}
}
</script>
Surikata
Profil *
Rararach:
Podmienku vnor priamo do cyklu. Inak v cykle for je nechutarna pouzivat podmienku <= v talychto situaciach, indexuj vypisi od nuly. Pre cykly for je "dohodnute programatorske pravidlo, pouzivat premenne i,j,k;


Surikata:
To functin(index) tam moc nechapu
Kajman
Profil
Rararach:

Je to skoro dobře. Ten if pro skoro hotové má být uvnit anonymní funkce natažené přes setTimeout. A v ní je pak potřeba používat proměnnou index, protože v a bude ve chvíli zpožděného vykonání už 11 - takže máte dobře našlápnutou k využití lexikální uzávěry, jen ji použijte.

<script> 
function zapni() {
    for (var a = 1; a <=10 ; a++) {
        (function(index) {
                setTimeout(function() {
                        document.getElementById("zap").innerHTML+= "ahoj, ";
                        if(index>7) {
                            document.getElementById("vysl").innerHTML="Už máš skoro hotovo";
                        }
                }, index * 500);
        })(a);
    }
}
</script>
<p id="zap" onclick="zapni()">Zapni to !!</p>
<p id="vysl">...</p>

Edit: ale než natáhnout najednou n timeoutů, bylo by efektivnější použít např. setInterval a počítat si v něm počet vykonání. Počítám, že tento příklad je spíše pro to pochopení nakládání s proměnnými bez reálného nasazení.

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: