| Autor | Zpráva | ||
|---|---|---|---|
| Rararach Profil * |
#1 · Zasláno: 11. 3. 2018, 00:26:23
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í. |
||
|
Časová prodleva: 8 let
|
|||
0