andrisp Posted September 22, 2005 Report Share Posted September 22, 2005 esmu uzrakstiijis (salicis kopaa) shitaadu js/css/html kodu , bet iisti nestraadaa.. 1. Kaapeec un kaa lai atrisina to, ka klikojot uz pogaam notiek taada kaa lagoshana - reizeem jaaspiezh divas reizes lai izlektu submenu, reizeem 3, bet reizeem ar pirmo ? 2. Kaa lai uztaisa, lai noklikojot uz citu linku atveertos jaunais submenu, bet veicais aizveras ? tipa, lai vienlaikus var buut atveert tikai viens submenu.. 3. Kaa arii buutu forshi, ja noklikshkjinot uz aarpus linka vai submenu, aktiivais submenu aizveras.. 4. Kaa lai uztaisa, lai resaizojot logu, atveertais submenu automaatiski apreekjinaatu jauno top un left, kur vinjam jaatrodas ? zinu, ka ir window.onresize, bet nemaaku izmantot.. Ok, saprotu par daudz jautaajumu vienai reizei, bet varbuut vismaz ar vienu kaads var paliidzeet ? liela veelme ir apguut js. Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 (edited) 1. Tur notiek nevis kā kuro reizi, bet tieši tā, ka menu pirmo reizi parādās uz otrā klikšķa, pēc tam gan pareizi rādās. Tas tāpēc, ka #32 rindā x.style.display pirmo reizi nav vienāds 'none', jo css atribūti neskaitās (skaitās tikai inline atribūti. Iesaku pārbaudīt, nevis uz vienādību ar 'none', bet uz nevienādību ar 'block' 2. atceries pēdējā atvērtā menu id kādā globālajā mainīgajā. un tad tai pašā showHide funkcijā pirms rādi jauno menu, noslēp veco (un atceries jaunā atvērtā menu id) 3. window.onclick laikam bija (vai body.onclick..) 4. Te priekš kam tas? vai tad kāds taisās atvērt menu un tad resaizot browseri? Ja nu ļoti gribās, tad uz tā onresize īventa skaties tā atvērtā menu id (tas kas ir iegaumēts 1. punktā) un izdari uz tā tādus pašus style. top/left vērtību piešķiršanu kā tai showHide funkcijā. Tam vajadzētu strādāt. Edit: btw semantiskāk būtu nevis tam span iedot klasi lilMenu, bet gan span vietā izmantot ul, un katru no <a> linkiem likt iekš li itema. Edited September 22, 2005 by bubu Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 (edited) 1. Tur notiek nevis kā kuro reizi, bet tieši tā, ka menu pirmo reizi parādās uz otrā klikšķa, pēc tam gan pareizi rādās. Tas tāpēc, ka #32 rindā x.style.display pirmo reizi nav vienāds 'none', jo css atribūti neskaitās (skaitās tikai inline atribūti. Iesaku pārbaudīt, nevis uz vienādību ar 'none', bet uz nevienādību ar 'block' 2. atceries pēdējā atvērtā menu id kādā globālajā mainīgajā. un tad tai pašā showHide funkcijā pirms rādi jauno menu, noslēp veco (un atceries jaunā atvērtā menu id) 3. window.onclick laikam bija (vai body.onclick..) 4. Te priekš kam tas? vai tad kāds taisās atvērt menu un tad resaizot browseri? Ja nu ļoti gribās, tad uz tā onresize īventa skaties tā atvērtā menu id (tas kas ir iegaumēts 1. punktā) un izdari uz tā tādus pašus style. top/left vērtību piešķiršanu kā tai showHide funkcijā. Tam vajadzētu strādāt. Edit: btw semantiskāk būtu nevis tam span iedot klasi lilMenu, bet gan span vietā izmantot ul, un katru no <a> linkiem likt iekš li itema. 22867[/snapback] 1. shitas paliidzeeja :) 2. & 3. man veel nav iisti izpratne par js, taapeec iisti nezinu kas un kaa, bet paartaisiiju shaadi (kautkur uzguugleeju, ka ja mainiigo funkcijaa definee bez 'var' priekshaa, tad tas ir global.. bet nestraadaa.(firefox js console saka, ka ActiveMenu nav defineets.. function showHide(y, bloks) { if (activeMenu) { activeMenu.style.display = 'none'; } activeMenu=document.getElementById(bloks); activeMenu.style.display = (activeMenu.style.display=='block'?'none':'block'); activeMenu.style.left = findPosX(y) - 95; activeMenu.style.top = findPosY(y) + 18; } Edited September 22, 2005 by andrisp Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 (edited) Tak globālie mainīgie darās tāpat kā jebkurā citā prog. valodā. Nodefinē to ārpus funkcijas un izmanto tajā. Šādi: var lastMenu = false; function showHide(...) { var x=document.getElementById(bloks); // kā iepriekš if (lastMenu) { if (x != lastMenu) { // ja tiek klikšķināts uz cita menu lastMenu.style.display = 'none'; lastMenu = x; } else { // ja uz tā paša lastMenu = false; // ja visi ir paslēpti } } ... // kā iepriekš } Edited September 22, 2005 by bubu Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 Tak globālie mainīgie darās tāpat kā jebkurā citā prog. valodā. Nodefinē to ārpus funkcijas un izmanto tajā. Šādi:var lastMenu = false; function showHide(...) { var x=document.getElementById(bloks); // kā iepriekš if (lastMenu) { if (x != lastMenu) { // ja tiek klikšķināts uz cita menu lastMenu.style.display = 'none'; lastMenu = x; } else { // ja uz tā paša lastMenu = false; // ja visi ir paslēpti } } ... // kā iepriekš } 22870[/snapback] paldies, tikai beigaas veel vajag lastMenu = ActiveMenu; , savaadaak lastMenu vislaik ir false un jeegas nekaadas Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 Kāds activeMenu? tur tev paste.php.lv kodā nebija nekāda activeMenu. Un vienmēr to piešķirt nevajag! Ja jau menu tiek paslēpts, tad vēlreiz jau to taču nevjag slēpt! Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 (edited) Kāds activeMenu? tur tev paste.php.lv kodā nebija nekāda activeMenu.Un vienmēr to piešķirt nevajag! Ja jau menu tiek paslēpts, tad vēlreiz jau to taču nevjag slēpt! 22875[/snapback] a nu es x paarsauvu activeMenu, lai saprotamaak.. bet vispaar to kodu vajag shitaa function showHide(y, bloks) { activeMenu=document.getElementById(bloks); if (lastMenu) { if (activeMenu != lastMenu) { lastMenu.style.display = 'none'; lastMenu = activeMenu; } else { lastMenu = false; } } else { // ja nav shis, tad lastMenu vislaik buus false.. lastMenu = activeMenu; } activeMenu.style.display = (activeMenu.style.display=='block'?'none':'block'); activeMenu.style.left = findPosX(y) - 95; activeMenu.style.top = findPosY(y) + 18; } upd. un tas window.onclick vai body.onclick nestraadaa kaa vajag, jo vinjs uztver arii tos klikus, kas ir uz linka vai atveertaa menu, liidz ar to nenotiek vispaar neklas.. Edited September 22, 2005 by andrisp Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 Ā nu pareiz. Tu tā domāji.. Es savādāk tevi sapratu. Bet tu "var" keywordu aizmirsi pie actionMenu inicializēšanas. Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 veel viens jautaajums <a href="#" onclick="showHide(this, 'kautkas1')" class="lilMenuHead">Darbības</a> ieksh ie un mozillas ir ok, bet ieksh operas, pie katra klika paarlaadeejaas lapa.. itkaa viss straadaa, bet paarlaadeejaas, kas nav jauki.. kaa lie tiek gala ar to ? Link to comment Share on other sites More sharing options...
PheliX Posted September 22, 2005 Report Share Posted September 22, 2005 mosh taa? <a href="#" onclick="showHide(this, 'kautkas1'); return false;" class="lilMenuHead">Darbības</a> 22883[/snapback] Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 Smukāk šitā: :) <a href="#" onclick="return showHide(this, 'kautkas1');" class="lilMenuHead">Darbības</a> un funkcijā pielikt return false; Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 paldies, tiku galaa ar visaam probleemaam , viens pats tochna njemtos veel visu dienu un taapat netiktu galaa :) vieniigais to resaizoshanu neuztaisiiju, bet kaa jau bubu teica, tas nemaz nav tik svariigi. Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 tomeer nav labi.. IE arii refreshojas (ar visu return false; ), kautgan to itkaa neredz.. ja piemeeram paskrolleju logu uz leju un nospiezhu uz linka, tad itkaa nekas nerefroshojas, bet logs atlec atpakalj augshaa.. Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2005 Report Share Posted September 22, 2005 Viņš tikai aizlec uz to # ancoru, nevis refrešo logu. Link to comment Share on other sites More sharing options...
andrisp Posted September 22, 2005 Author Report Share Posted September 22, 2005 Viņš tikai aizlec uz to # ancoru, nevis refrešo logu. 22922[/snapback] hm... ko dariit, lai vinjs nekur nelekt, bet paliktu tur kur ir ? Link to comment Share on other sites More sharing options...
Recommended Posts