Autor Zpráva
opicak
Profil
Dobrý den, nevíte někdo, jak udělat efekt z fw jQuery- funkce Hide() ?

Vím, jak se udělá zmizení obsahu ,ale já bych potřeboval, aby postupně mizel ze stránky a obsah pod ním se posouval plynule nahoru.

Zkoušel jsem se podívat přímo do zdroje jQuery, ale v tom jsem se opravdu nevyznal, díky za všechny nápady.

opicak
yFang
Profil
opicak:
Zkus .slideUp(), viz http://api.jquery.com/slideUp/
opicak
Profil
yFang:

Ty si mě asi blbě pochopil, já nechci jQuery, já to chci normálně přes JS bez framework.
_es
Profil
opicak:
já to chci normálně přes JS bez framework.
Postupne cez časovač setInterval alebo setTimeout zmenšuj výšku elementu na 0.
opicak
Profil
_es:

Díky, mě nenapadlo, snad to nějak dám do kupy.
opicak
Profil
a už mám problém, jak zmenším div na menší velikost než se vejde text, tak div se sice zmenší, ale text je přepsaný přes div.

Nevíte jak udělat aby se zalomil?

díky opicak.
Chamurappi
Profil
Reaguji na opicaka:
Zalomil nebo uřízl?
_es
Profil
opicak:
www.jakpsatweb.cz/css/overflow.html
opicak
Profil
Chamurappi:
Zalomil nebo uřízl?

Díky myslel jsem uřízl, špatně jsem se vyjádřil.
opicak
Profil
Tak mám ještě jeden problém, nevím jestli i ve starších verzích IE, ale v IE 9 mi nejde setInterval, nevíte někdo jak to vyřešit?

Dík, opicak.
_es
Profil
opicak:
ale v IE 9 mi nejde setInterval
Neverím, chyba bude inde.
„Nejako mi niečo nefunguje“ je nedostatočný popis problému.
pcmanik
Profil
opicak:
setInterval je velmi stara vlastnost v js, cize to skor ukazuje na chybu v tvojom kode.
opicak
Profil
pcmanik, _es:

Tak nevím v čem mám chybu, jedině kde mi jde tenhle kód, jak chci je chrome (v opeře, ie ani mozille to nefunguje).

//Konstanta
TIMER = 20;

function Hide(div)
{
    var element = document.getElementById(div);
    element.style.overflow = 'hidden';
    element.height = element.offsetHeight;
    clearInterval(element.timer);
    element.timer = setInterval('Fade("'+div+'")',TIMER);
}

function Fade(div,flag)
{
    flag = flag == null ? 1 : flag;//jestliže není zadáná flag je nastavena na 1
    var element = document.getElementById(div);
    var value;
    if(flag==1)
        {
            value = element.height - 1;
        }
    else
        {
            value = element.height + 1;
        }
    element.height = value;
    element.style.height = value+' px';
    if(value <= 1)
        {
            element.style.height = 'none';
            clearInterval(element.timer);
        }
}


opicak
_es
Profil
opicak:
Nepredávaj do časovačov textové reťazce. Získaš tým aj ďalšie výhody.

element.timer =
Neukladaj dáta takýmto spôsobom do HTML elementov.

Prečo elementu nastavuješ okrem vlastnosti style.height aj vlastnosť height?

Pokús sa ten skript prerobiť do nejakého zrozumiteľnejšieho a menej chaotického tvaru.
opicak
Profil
_es:

LoL fakt že jo.

Díky bylo to tím div.style.height = value+'px';

a je správně tento kód?
var pole0 = form[pole[0]].value;


Dík opicak
Witiko
Profil
opicak:
Správně je, nicméně číslovat proměnné není pěkné, doporučuji využívat polí. Tzn.:
var pole = [];
pole[0] = form[pole[0]].value;


A máš chybu v deklaraci konstanty TIMER v tom, že ji ve skutečnosti nedeklaruješ:
var TIMER = 20;
opicak
Profil
Ten tvůj příklad mi nejde nevim proč.

//pole je na stránce v interním scriptu
pole[0] = form[pole[0]].value;
 if(pole[0] == "")
    {
        vypisMsg(pole[0],musis+'p\u0159ezdívku.',2);
        return false;
    }
_es
Profil
opicak:
Ten tvůj příklad mi nejde nevim proč.
Zrejme bol nezmyselný už ten tvoj kód a Witiko sa asi nazdával, že mieniš použiť premenné pole0, pole1, pole2, ... a teda bude lepšie namiesto toho použiť pole.

Na otázku:
a je správně tento kód?
var pole0 = form[pole[0]].value;
sa nedá odpovedať, lebo:
1) Nie je jasné, čo je v premennej (?) form.
2) Nie je jasné, čo je v premennej (?) poli (?) pole.
3) Nie je celkovo jasné, čo by mal ten kód robiť.
opicak
Profil
_es:
1) Nie je jasné, čo je v premennej (?) form.
V proměné form je formulář(form) a ve form se před odeslání dat(onSumbit) spustí funkce jestli není žádný formulář prázdný.

2) Nie je jasné, čo je v premennej (?) poli (?) pole.
var pole = ['r_user','r_passwd','r_email'];
Jména inputů.

3) Nie je celkovo jasné, čo by mal ten kód robiť.
Tento kód kontroluje jestli není input (r_user) prázdný a jestli ano tak se celý submit zastavý a vipíše se hláška ,,Musíte zadat přezdívku."
Witiko
Profil
opicak:
Ano, myslel jsem si, že hodláš pojmenovávat proměnné číselně. Je jasné, že ti to takto nemůže fungovat, jelikož máš shodný název u dvou proměnných (pole). Původní příklad bude asi správně (moc krátké na posouzení), jen bych se z principu nepřikláněl k psaní čísel do názvů proměnných. Ale to je jen moje chápání názvových konvencí.

Jenom co vidím: 'p\u0159ezdívku.' - je skutečně nutné takto ANSI ecapovat unicode? Nebylo by lepší použít středoevropské kódování a vepsat tam normálně písmena s háčky a čárkami?
opicak
Profil
Jo, já to nepoužívám, ale používám netbeans a ten mi to escapoval sám.
opicak
Profil
//edit
ale pořád potřebuju, jak zjistit výšku toho divu, aby jsem mohl zase vrátit div do stejné velikosti postě jak funguje funkce Show() v jQuery.

díky, opicak
_es
Profil
opicak:
když deklaruju v jedné funcki proměnou var a, která je odkazována v setInterval na jinou funkci, jestli v další funkci existuje.
Prečo riešiš jednu vec vo viacerých vláknach?
Z hľadiska prístupu k premenným je dôležité to, kde je funkcia definovaná, nie kde sa na ňu odkazuje.
opicak
Profil
_es:
Jo, tak toho jsem si nevšiml fakt sorry.

Dík, odpověď si mi napsal v tom druhém vláknu.
Witiko
Profil
opicak:
K těm proměnným - jednou jsem to tu už velmi obšírně vysvětloval. Například tady a tu.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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