Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Nefunkční objekt v JS

Aktivity
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:16.3.2017 0:00

Ahoj. Nějakou dobu už řeším problém, a nemohu nikde najít řešení. Už jsem psal i do tohoto fóra, tak se prosím nezlobte, že se opakuju, ale opravdu s tím nemohu za žádnou cenu hnout.

Chci aby se mi levé menu posuvalo společně se stránkou. vytvořil jsem si objekt, na který se v JS odkazuji po načtení. Objek funguje, pouze pokud nemám v html zapsáno <!DOCTYPE html>. To znamená , že mi objekt funguje jen ve quirk módu, kdy jsou nějak porušována prvidla W3C.
objekt je dost jednoduchej.

var obj={
T:1, // - Timer
smenu:"",
HT:"",
HeightOfMenu:460,

reads:function()
{
this.smenu=do­cument.getEle­mentById("side­bar");
this.HT=documen­t.body.clientHe­ight-this.HeightOfMenu;
this.smenu.sty­le.top= document.getE­lementsByTagNa­me("body").item(0)­.scrollTop+ob­j.HT;
setTimeout("ob­j.reads();",ob­j.T);

}
};

window.onload = function(){
NewSidebar(); // - toto jen vytvoří levé menu
Napln(); //- vyplní tělo stránky
NewSide(); // - vytvoří pravé menu
obj.reads(); // - odkazuji se na objekt posuvu levého menu

};

Co mohu udělat, aby mi objekt fungoval i ve standartním módu?
Mohu-li poprosit nehejtujte mě výkřiky googli, javascript není java ... apod. Skutečně jsem googlil jak pitomej, a nemůžu nic o přepínání standartního a quirk módu, jejich vlivu na fugování objektů najít. https://www.w3.org/DOM/DOMTR#dom1 jsem prolistoval a nějak jsem z toho nic nepochopil. Potřebuju konkrétní radu. Už mě tenhle problém deprimuje.... .
Děkuju moc.

 
Odpovědět
16.3.2017 0:00
Avatar
Pavol Hejný
Tvůrce
Avatar
Odpovídá na Nezmar Hydra
Pavol Hejný:16.3.2017 0:10

Obecně pozice prvků je lepší řešit přes CSS a ne přes JS. JS je v tomhle případě trochu kanón na vrabce.
Tohle ti to menu bude držet neustále vlevo a bude stále vidět na obrazovce:

html:

<nav id="left-menu"></nav>

css:

#left-menu{
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        width: 200px;
}
Editováno 16.3.2017 0:11
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
16.3.2017 0:10
/^(web )?(app )?developer$/
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:16.3.2017 1:55

Děkuju za radu. Posuv už mi funguje.... . Vůbec nevim proč jsem se sek na nefunkčnim objektu a nehledal řešení v CSS. CSSkem formátuju stránku a tak mi to nějak nedošlo.
Jen kdyby někdo poradil, jaká je spojitost s těma objektama a přepínáním quirk a standart módu byl bych rád. Nejsem angličtinou nadanej, takže když něco hledám mám fakt dost vážný problém ....... . Díky

 
Nahoru Odpovědět
16.3.2017 1:55
Avatar
Pavol Hejný
Tvůrce
Avatar
Odpovídá na Nezmar Hydra
Pavol Hejný:16.3.2017 13:11

Podle mě jsi používal hrozně zbytečně složité řešení, kde jsi to obaloval do jakéhosi objektu. Tobě prostě stačí při každém scrollu aktualizovat pozici menu:

https://jsfiddle.net/…/dobtp93z/1/

A JS samozřejmě dává smysl, pokud chceš udělat nějaké speciální pozicování:

https://jsfiddle.net/…/dobtp93z/2/

Tohle mé řešení přes js mi v quirk módu funguje. Ale dřív nebo později narazíš na věci, co tam nepůjdou.
Quirk mód podle mě vůbec neřeš protože se to týká IE5 a IE6 a lidé co mají IE5 nebo 6 musí být zvyklí, že jim stále něco nefunguje a blbne.
Pokud budeš mít Nokii 3310 tak taky přece neočekáváš, že ti v něm budou fungovat nejnovější cool appky.

Nahoru Odpovědět
16.3.2017 13:11
/^(web )?(app )?developer$/
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:17.3.2017 23:29

Ještě jednou díky. Na testování jsem používal mozzilu a chrome. Tvoje kódy mi fungujou v obou módech v obou prohlížečích.

 
Nahoru Odpovědět
17.3.2017 23:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.