Autor | Zpráva | ||
---|---|---|---|
Kápo Profil |
#1 · Zasláno: 13. 12. 2009, 20:40:11
No, mám povedzme pár problémov v javascripte...teda, okrem toho že má veľmi divnú syntax a neviem si zvyknúť, pokúšam sa pochopiť ako to pracuje, lenže nejde mi to...napríklad, chcel som pochopit timer, tak som si napísal:
var n=1; //dufam, ze zapis je spravny... window.setInterval("n++",100); //dufam, ze aj tu plati ze nieco++ zvysi nieco o 1...kazdych 100 milisekund (0,1 sekundy) document.getElementById("div").innerHTML=n; //tuto by mal prepisat text v <div></div> na premennu n...teda kazdu milisekundu o vacsiu hodnotu lenže keď si privolám v subore.html externý script takto: <script language="javascript" type="text/javascript" src="script.js"> </script> a svoj div tam mám takto: <div id="div"> 1 </div> tak v dive svieti 1 a nechce sa menit...what's wrong? Za prípadnú pomoc ďakujem. |
||
Radek9 Profil |
#2 · Zasláno: 13. 12. 2009, 21:03:49 · Upravil/a: Radek9
var n = 1; window.setInterval(function(){ document.getElementById("div").innerHTML = n; n++; }, 100); |
||
Kápo Profil |
#3 · Zasláno: 13. 12. 2009, 21:09:44
No, velmi pekne dakujem za odpoved, sice vobec nerozumiem preco tak to nefunguje a tak hej (ako hovorim, syntax javascriptu mi pride byt velmi nepochopitelna), pokusim sa ju este neskor pochopit...
|
||
Kápo Profil |
#4 · Zasláno: 13. 12. 2009, 21:24:43
OK, tak som teraz skusil napisat toto (mam deklarovane n):
while (n < screen.Width) { window.setInterval(function(){document.getElementById("div1").width = n;n++;}, 10); } predstavujem si to takto...obrazok (s id "div1" - len poznamka je to 1X1 px cervena bodka - sa bude zvacsovat v osi x az kym nebude dlhy ako obrazovka)...ale zobrazi sa mi len cervena bodka...znova dopredu dakujem za pripadnu pomoc |
||
Kápo Profil |
#5 · Zasláno: 13. 12. 2009, 22:28:32
tak toto nechapem...ked dam miesto n < screen.Width ale dam n < 10 tak cely prehliadac zamrzne...to while ako ma byt spravne zapisane, ako ma byt vobec zapisane to co chcem dosiahnut?
|
||
yFang Profil |
#6 · Zasláno: 13. 12. 2009, 22:43:02
Kápo:
Myslím, že cyklem while toho nedocílíš. Nejdřív ten cyklus proběhne a pak zobrazí výsledek. Musíš použít buď setInterval nebo setTimeout. |
||
_es Profil |
#7 · Zasláno: 13. 12. 2009, 22:51:15
Kápo:
„window.setInterval("n++",100); //dufam, ze aj tu plati ze nieco++ zvysi nieco o 1...kazdych 100 milisekund (0,1 sekundy)“ To je pravda, no lepšie je namiesto reťazca dať ako prvý parameter funkciu (objekt funkcie) ako ti radí Radek9. „document.getElementById("div").innerHTML=n; //tuto by mal prepisat text v <div></div> na premennu n...teda kazdu milisekundu o vacsiu hodnotu“ Je to jednorazový príkaz a do vlastnosti innerHTML bude zadaný reťazec vzniknutý z konvertovania premennej n na reťazec. Premenná n síce bude menená každú desatinu sekundy, no bez viditeľného efektu, keďže už potom nemá nijakú súvislosť s vlastnosťou innerHTML. |
||
Leo Profil |
#8 · Zasláno: 13. 12. 2009, 22:51:26
yFang:
"Musíš použít buď setInterval nebo setTimeout." setTimeout, volany rekurzivne pokud je splnena podminka. Leo |
||
Kápo Profil |
#9 · Zasláno: 14. 12. 2009, 17:28:42
ja tomu furt nechapem...mam tam:
window.setInterval(function(){document.getElementById("div1").width = n;n=n+5;}, 1); ako mam spravit aby ciara sa prestala predlzovat ked n dosiahne nejaku hodnotu? mam zrusit timer? alebo co? :D |
||
_es Profil |
#10 · Zasláno: 14. 12. 2009, 17:40:21 · Upravil/a: _es
Kápo:
Ak by si kód vkladal ako kód (tlačidlo ), tak by to bolo prehľadnejšie a zároveň by kľúčové výrazy slúžili ako odkazy na dokumentáciu. Ak v Radek9ovom kóde klikneš na setInterval, tak sa dozvieš viac. Zjednodušene: Metóda setInterval vráti nejaký identifikátor, ktorý si musíš uložiť, a keď budeš chcieť to opakované volanie funkcie zrušiť, tak ten identifikátor použiješ v metóde clearInterval. Príliš malé hodnoty opakovania môžu byť prehliadačom upravené na "rozumnú" hodnotu a teda hodnota 1 ms asi nebude akceptovaná. Poznáš nejaký monitor s frekvenciou 1 000 Hz? |
||
Kápo Profil |
#11 · Zasláno: 14. 12. 2009, 17:57:55
var n = 1; intervalID = window.setInterval(function(){document.getElementById("div1").width = n;n=n+5;}, 10); function StopLine() { clearInterval(intervalID); } Ok, fajn teraz to na stlacenie tlacitka fungyruje...xD ale furt neviem prist na to, ako zadat do funkcie take to if...ze if n>screen.width ->>>>>>> clearInterval "Poznáš nejaký monitor s frekvenciou 1 000 Hz? " :D:D:D:D:D |
||
_es Profil |
#12 · Zasláno: 14. 12. 2009, 18:04:51
Kápo:
„ale furt neviem prist na to, ako zadat do funkcie take to if...ze if n>screen.width“ Normálne si nájdi popis príkazu if a ako posledný príkaz v tej nepomenovanej funkcii môžeš dať overenie toho a prípadné spustenie tej tvojej funkcie StopLine. |
||
Kápo Profil |
#13 · Zasláno: 14. 12. 2009, 22:28:29
AAAAAA IDE TO!!!
thx a lot, fakt som vdacny konecne som po tazkom boji spojazdnil pohyblivu linku (haha)... |
||
Časová prodleva: 14 let
|
0