Autor Zpráva
Toomas
Profil
Nazdarek lidicky,

mam jeden velky problem. Snazim se udelat opakujici se funkci, ktera by neustale dodavala informaci o velikosti okna prohlizece tak, jak si ho zrovna uzivatel upravil. Mam krasnou funkci, ktera mi tyto udaje doda. Problem je, jak to udelat, aby mi to dodala kazdou chvilku a podle toho se presunuly nektere elementy na strance. Snazim se pomoci metody setInterval, ale s tim mi to nezmeni nic ani jednou.

Asi mam nejaky principalni problem. Takto vypada kod, kdyz mi to doda jednou, bez pouzivani setInterval :

var pif = 640; // sirka posunovaneho elementu
puf = winH(); // to je funkce, ktera doda rozmery okna - sirku
paf = leva(puf,pif); // to uz jenom pocita souradnice
document.write(paf); // a tady vidim, ze to dava vysledek

Ale jak udelat, abych dostal vysledek s pomoci setInterval ? At delam co delam, vubec to nereaguje.
Mam to udelat : puf = setInterval("winH()",1000); ???

To nefunguje, dodava to jakesi smyslene cislo, ktere si pri kazdem refresch pripocita +2. Divny. Nic nechapu. Kam to setInterval narvat, aby to fungovalo, jak to zkloubit ? Do vlastni funkce winH() ? Nebo potom nekde dal, kdyz se vola a pocita se s ni ? Nemate o tom trosku prehled ? Ja teda na JavaScript nejsem zadny borec, abych se priznal. Vubec nejsem vlastne zadnej borec. Ted me opustila pritelkyne. Hm, ale to s tim nesouvisi, ze jo. Alespon nejaka jistota.

Diky moc predem !!!
Toomas
Toomas
Profil
No, malinko jsem s tim hnul. Jakesi nocni osviceni. Ale stejne to blbne. Pravidelne mi to vypisuje zmenene udaje, ale retourne paf se nekona, "a" mi to ani nevypise, ani neobnovi souradnici. Co vic, veskere elementy zmizi v okamziku, kdy do nich dodam promenou "a" misto fixniho cisla. Pak se mi jenom vypisuji cisla pif a puf na prazdne strance. vidite do toho trosku lip, nez ja ?

<script>

function premena() {
pif = 640;
document.write(pif+"<br />");
puf = winH();
document.write(puf+"<br />");
paf = lat(puf,pif);
return paf;
}

</script>

<script>

var a = setInterval("premena()",1000);
document.write(a);
document.write("<div id="image_background" style="top:"+a+"px; left:30px">");

</script>

(o kus dal je samozrejme div uzavrenej, to problem neni. Kdyz tam nedodam to "a", tak se vse zobrazuje).

Dik predem, jsem z toho jelen !!!!
nothrem
Profil
puf = setInterval("winH()",1000);

Tohle ti vrátí referenci na timer -> což je opravdu 'smyšlené' číslo.

Musíš celý kód dát do funkce a tu funkci volat v timeru.

Tedy ještě jednou abys to pochopil: setInterval nevrací hodnotu volané funkce, ale číslo toho timeru (což nepotřebuješ).
setInterval pouze nastaví, že za x milisekund se spustí určitá funkce a pak ihned pokračuje... (tedy nečeká na uplynutí času!)
viz Jak psát web - časování

PS: Mam takovej pocit (edit: neni to jen pocit, ale fakt), že pokud se document.write zavolá až po kompletním načtení stránky, tak aktuální stránku celou přepíše. Lepší by bylo přistupovat přímo k vlastnotem daného prvku.
document.getElementById('image_background').style.top = a;

habendorf
Profil
Toomas: Napiš co je základním záměrem. Mám tušení, že JS ani nebude potřeba.
Toomas
Profil
Chci "jenom" zajistit, aby se na jedne strance umistovaly vsechny jeji elementy na urcite misto tak, aby podstatne bylo videt vzdy. To podstatne je spis vpravo dole a tak pri malem monitoru, nebo zmenseni okna by vyjely nepodstatne elementy (grafika) uplne pryc, nalevo. Bude stacit, kdyz se takto bude ovladat jeden jediny div, ostatni je v nem. Nemuzu proporcionalne zmensovat ruzne prostory, velikosti pisma etc. Nakonec to podstatne se krasne vejde do monitoru 600 x 800. Na druhe strane pri vetsim monitoru je zadouci, aby vse dostalo jakesi plus, o ktere vlastnik predpotopniho monitoru bude ochuzen.

Tato stranka bude vyvolana z jine a ziska rozmery cele obrazovky, zustane jenom horni "modra" lista. Nebude se moct rolovat. Jde o jakousi jednoduchou pedagogicku interaktivni hru. Chci nechat moznost okno zmensit, v tom pripade musi zustat vyditelna oblast v pravem spodnim rohu - ale taky ne uplne nalepena dole a vpravo, kdyz bude vetsi monitor. To vse se jednoduse doda vypoctem, to mi funguje. Jde mi jen o to mit neustalou kontrolu nad aktualnim stavem.

Zkusim zkombinovat co jsi mi napsal s tim, co jsem napsal ve svem druhem prispevku : udelal jsem ze vseho jednu funkci a zkusim tam dat to tvoje :
document.getElementById('image_background').style.top = a;

TAKZE :

==================

function premena() {
pif = 640; // rozmer elementu
puf = winH(); // doda rozmer okna exploreru
paf = laterale(puf,pif); // spocita nove souradnice
document.getElementById('image_background').style.top = paf;
}

</script>

ALE TEDY, jak to roztocit, abych kazdou vterinu dostal novy vysledek ? Staci nasledujici ?

<script>
setInterval("premena()",1000);
</script>

<div id="image_background"></div>

==================

To volani funkce premena() v timeru, to je ono ???
Jdu to vyzkouset...
Zatim diky, kdybys mel nejakou poznamku, tak nevahej !!!
roberta
Profil
Toomas
Chci "jenom" zajistit, aby se na jedne strance umistovaly vsechny jeji elementy na urcite misto tak, aby podstatne bylo videt vzdy

tak na toto nepotrebuješ JS a ani sa na problémy takéhoto typu JS nepoužíva. tvoje riešenie mi pripadá, ako keby si chcel cestovať z Ostravy do Brna cez Plzeň...
skôr by som ti doporučil pozrieť si http://css.interval.cz/ a zameraj sa hlavne na kapitolu Layouty
Toomas
Profil
No, mozna to s temi layouty tak jasne nebude V zadnem pripade zde totiz nemuze dochazet k proporcionalnimu adaptavovani elementu.

Ja potrebuju, aby muj div za urcitych okolnosti vzal i zaporne top a left - nesmysly zmizi a zustane podstatne, ve sve puvodni velikosti.
Na druhe strane muj dulezity element bude na monitoru 600 x 800 opravdu nalepeny v okne vpravo a dole
na vetsim monitoru bude vsak v jakemsi zlatem rezu.

To fakt nevim, jak bych dokazal pres nejake bottom right.... Porad si myslis, ze to zvladnu layouty ? Kdyby to snad slo i za dannych podminek, tak mi prosim naznac metodu. CSS pouzivam bezne, prave proto si nedokazu predstavit, jak bych to s nim vykouzlil bez JS.
Toomas
Profil
Abych to zjednodusil :

- na velkem monitoru bude videt vsechno
- na malem monitoru je videt jenom vyrez, jako kdyz si fotograf zvoli, ze z daneho snimku nazvetsuje jenom urcitou cast.

To mi funguje kdyz se to zabrazi pri nacteni.
Resim jenom, jak tu situaci zaktualizovat, kdyz se upravi okno. Layout nezvladne zobrazit chteny stav ani na poprvy. Musi se dodat souradnice divu podle zasad, ktery css nebere v potaz.
Toomas
Profil
Tak nasledujici kod funguje jenom na aktualizovane vypisovani. Ale jak mam vkomponovat document.getElementById('image_background').style.top = a; ?
Zda se mi, ze to funguje, kdyz je pred tim onMouseOver apod, ale jak to zakomponovat tady ?
Uz jsem s tim zkousel vsechno mozny, na tohle jsem kratky. Muzete mi nekdo trosku polopaticky poradit ?? Diky moc predem !!!!


<script>
function premena() {
pif = 640;
document.write(pif+"<br />");
puf = winH();
document.write(puf+"<br />");
a = lat(puf,pif);
document.write(a+"<br />");
}
</script>

<script>
setInterval("premena()",1000);
</script>
Toto téma je uzamčeno. Odpověď nelze zaslat.