Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Autor | Správa |
---|
Registrovaný: 27.01.11 Prihlásený: 08.05.12 Príspevky: 73 Témy: 29 | 29 |
Ahojte, mam taky problem. Vsetko mi na tomto skripte ide(MOJ VLASTNY):
Kód: <script language="javascript" type="text/javascript"> function asdf() { var farby = new Array("#33FF00","#D580FE","#809FFE"); var asdf = Math.floor(Math.random()*3); document.write(farby[asdf]); document.body.style.background = farby[asdf]; setTimeout('asdf()',1000); } </script>
<body onLoad="mytime=setTimeout('asdf()',1000)"> </body>
Az na to, ze ked sa to raz spusti, po sekunde sa nic nedeje. DIky vopred // pridané po 8 minútach od posledného príspevkuEDIT: Asi som zistil preco to nejde. Ale opravit to neviem. Podla mna sa to dookola toci, len neni novy random...
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno | |
Registrovaný: 27.01.11 Prihlásený: 08.05.12 Príspevky: 73 Témy: 29 | 29 |
Ďuri píše: Nemozes pouzivat document.write po nacitani stranky. Ak chces kod farby vypisovat, men vlastnost innerHTML nejakeho elementu. Inak skript funguje, akurat je dost prasacky napisany.
No skusal som document.body.style.background.innerHTML atd.... a nic. Ani sa nenastavil background. P.S. Ak viem, tak mne by to aj slo. Len akoby nesiel Timer. Keby to slo, tak aspon da inu HEX farbu. Ale nic. Vsetko stoji. Ale ma to ucast aj ten refresh. P.S. Ja som v JS newbie
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Ked chces menit CSS vlastnost background, nastav document.body.style.background. Vlastnost innerHTML sluzi na nieco ine.
|
|
Registrovaný: 20.08.11 Prihlásený: 14.03.12 Príspevky: 66 Témy: 4 | 4 |
ďalšia vec. Rekurzíva ti asi nič nehovorí, že? Ide o to, že máš tam nekonečný cyklus, stránka tak bude pracovať proste donekonečna.
_________________ Karel Kryl a Jaromír Nohavica Fanda. |
|
Registrovaný: 15.01.07 Prihlásený: 23.09.15 Príspevky: 186 Témy: 3 | 3 Bydlisko: ZV/BA |
takto pouzitu "rekurziu" som uz dlhsie nevidel, slusny gulas,
_________________ nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot " 1000.times { puts "I will not spam on the boards" } " |
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
ocom pisete? to mi teda vysvetlite s tou nekonecnou rekurziou....pchchchch
|
|
Registrovaný: 20.08.11 Prihlásený: 14.03.12 Príspevky: 66 Témy: 4 | 4 |
Asi o tomto:
Kód: function a() { a(); }
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Aky problem? Kod je sice napisany prasacky, ale rekurzia ("rekurziva" ) je myslim presne to, co autor temy zamyslal. Navyse so zavolanim fcie sa vzdy caka sekundu, takze myslim, ze v poriadku.
|
|
Registrovaný: 20.08.11 Prihlásený: 14.03.12 Príspevky: 66 Témy: 4 | 4 |
=D no, preklepy sú asi na dennom poriadku. No, neviem, takto preťažovať zbytočne počítač len kvôli náhodne meniacemu sa pozadiu. To bude niečo na spôsob "shocking page.
_________________ Karel Kryl a Jaromír Nohavica Fanda. |
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | 6 |
stale nechapem. chyba je tam taka ze asdf je nazov aj funkcie a potom to preserie na nazov premennej pomocou ktorej urcuje nahodny vyber farby. Ako takto pretazovat pocitac?
Si pozri skoro vsetky flash zalezitosti co ti nutia webstranky a ze jak vytazuju pocitac.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
juho, chces vediet, preco nemas pravdu? Tym, ze metodu setTimeout() zavola s retazcom ako prvym argumentom, vykona sa tento kod v globalnom scope a tam ziadna premenna menom asdf definovana nie je. Samozrejme, keby sa autor temy drzal spravnych programatorskych konvencii, spominany problem by sa ukazal.
|
|
Registrovaný: 27.01.11 Prihlásený: 08.05.12 Príspevky: 73 Témy: 29 | 29 |
=D Asi som zistil preco to nejde. mytime=setTimeout('asdf()',1000) = mytime=setTimeout(asdf(),1000)
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
To je uplne zle, pretoze fciu asdf zavolas okamzite a ako prvy argument setTimeoutu sa pouzije undefined. Spravny zapis je setTimeout(asdf, 1000), bez uvodzoviek a bez zatvoriek. Rovnako ale potom nezabudni, ze asdf uz budes mat prepisane lokalnou premennou, takze si to bud premenuj, alebo odkazuj na fciu cez arguments.callee, alebo cez window.asdf.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Tie úvodzovky tam byť môžu, pretože kedysi sa tam používal reťazec (dnes je ale rozumnejšie tam dať len ten názov funkcie).
|
|
Registrovaný: 27.01.11 Prihlásený: 08.05.12 Príspevky: 73 Témy: 29 | 29 |
Ok ono to funguje. Len ja som mal Operu a tam to iba raz sa spustilo, a do ze sa mazala obrazovka, to robilo document.write. Duri: Nwm ako pouzit innerHTML v document.write
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Ty hlavne nevieš základy, ktoré by si si mal doštudovať!
innerHTML je vlastnosť elementu, ktorý nemôžeš požiť s document.write, pretože ten element v tom momente ešte neexistuje...
|
|
Registrovaný: 27.01.11 Prihlásený: 08.05.12 Príspevky: 73 Témy: 29 | 29 |
camo píše: Ty hlavne nevieš základy, ktoré by si si mal doštudovať! innerHTML je vlastnosť elementu, ktorý nemôžeš požiť s document.write, pretože ten element v tom momente ešte neexistuje...
Camo, ano, v JS som novacik, ale zdelavam sa . Syntaxu uz celkom chapem, no tie funkcie tie zakladne neviem..
|
|
Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
|