Jump to content
php.lv forumi

Recommended Posts

Posted

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.

Posted (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 by bubu
Posted (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 by andrisp
Posted (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 by bubu
Posted
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

Posted

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!

Posted (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 by andrisp
Posted

Ā nu pareiz. Tu tā domāji.. Es savādāk tevi sapratu.

Bet tu "var" keywordu aizmirsi pie actionMenu inicializēšanas.

Posted

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 ?

Posted

mosh taa?

<a href="#" onclick="showHide(this, 'kautkas1'); return false;" class="lilMenuHead">Darbības</a>

22883[/snapback]

Posted

Smukāk šitā: :)

<a href="#" onclick="return showHide(this, 'kautkas1');" class="lilMenuHead">Darbības</a>

un funkcijā pielikt return false;

Posted

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.

Posted

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..

×
×
  • Create New...