Autor Zpráva
Kápo
Profil
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
var n = 1;
window.setInterval(function(){
  document.getElementById("div").innerHTML = n;
  n++;
}, 100);
Kápo
Profil
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
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
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
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
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
yFang:

"Musíš použít buď setInterval nebo setTimeout."

setTimeout, volany rekurzivne pokud je splnena podminka. Leo
Kápo
Profil
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
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
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
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
AAAAAA IDE TO!!!
thx a lot, fakt som vdacny konecne som po tazkom boji spojazdnil pohyblivu linku (haha)...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: