Avatar billede Slettet bruger
15. marts 2003 - 23:35 Der er 7 kommentarer og
1 løsning

Skjul <select>, hvis overlap med layer.

Hvordan afgør man om en <select> box overlapper med et layer, man åbner?

Jeg vil gerne skjule alle select boxe på min side, der måtte overlappe med et layer, jeg åbner på midten/centreret af skærmen, som indeholder en besked til brugeren.

Grunden til, jeg vil skjule select boxene er, at det mig bekendt ikke er muligt at placere et layer ovenpå en select box.

Jeg kan godt finde ud af at skjule alle <select> boxe på siden, når jeg "åbner" mit layer. Men jeg vil kun skjule dem, der måtte overlappe med laget, jeg åbner. 
 
Jeg kan se at http://www.eksperten.dk/js/coolmenus/cm_addins.jfl.js faktisk gør præcis dette. Men det script er bygget til coolmenus, og roder rundt med en masse variable, jeg ikke aner, hvad er.

Måske nogle kan udlede noget derfra.
Avatar billede olebole Juniormester
15. marts 2003 - 23:56 #1
<ole>

Da Ekspertens menu blev ændret på min foranledning, ved jeg positivt, at den ikke tager hensyn til, om laget overlapper select'en. Den skjuler bare alle selects, når menuen foldes ud ... er det ikke nok?
Brugeren kan jo alligevel ikke anvende select'en, sålænge menuen er foldet ud - og med mindre select'en er totalt skjult af laget, er 'skjulningen' af select'en jo alligevel synlig for brugeren.

At checke sidens selects i forhold til dens lag er temmelig tungt - og i langt de fleste tilfælde unødigt overkill.

/mvh
</bole>
Avatar billede Slettet bruger
16. marts 2003 - 00:09 #2
/******************************************
CM_ADD-IN - hideselectboxes (last updated: 01/29/02)
IE5+ and NS6+ only - ignores the other browsers

Because of the selectbox bug in the browsers that makes
selectboxes have the highest z-index whatever you do
this script will check for selectboxes that interfear with
your menu items and then hide them.

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.
*****************************************/

På denne kommentar fra cm_addins.jfl.js scriptet, lyder det da som om, at den kun skjuler select's, der overlapper med menuen. Men det gør scriptet måske slet ikke?

Anyhow, jeg efterlyser stadig et script, der _kun_ skjuler select's der måtte overlappe med et givent lag.
Avatar billede olebole Juniormester
16. marts 2003 - 01:27 #3
Hmmm ... noget tyder på, de har ændret den  :)

Du kan bladre alle dine selects igennem i en for-løkke:
  var aSel = document.getElementsByTagName("select");
Nu er 'aSel' et array, indeholdende sidens select-elementer - og kan let bladres igennem.

Derefter kan du hente hvert select-elements positioner med funktionen:
function getPos(elm) {
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy};
}
som returnerer et objekt med de to properties x og y. Du kan gøre således i for-løkken:
  var pos = get_pos(aSel[i]);
  var xVal = pos.x;
  var yVal = pos.y;

Så har du den pågældende selects koordinater. Derefter må du finde højde og bredde med aSel[i].offsetWidth og aSel[i].offsetHeight.

Først derefter kan du sammenligne med tallene for dit lag. En kluntet og halvtung løsning - men det, du kan gøre  :)
Avatar billede Slettet bruger
16. marts 2003 - 23:17 #4
Siden det nu er dig, kan du komme med et fungerende eksempel?
Avatar billede olebole Juniormester
17. marts 2003 - 00:38 #5
Nej, jeg har ikke noget liggende - men siden det er dig, kan det vel ikke volde de store problemer.
Du kan med ovenstående finde lagets venstre-, højre-, over- og underkant. Du kan bladre dine selects igennem og finde de samme egenskaber ved hver af dem ... så er det jo bare at lave en sammenligning i en if-statement og skjule select'en, hvis den overlappes af laget.

Fortæl, hvor du er kommet til - så skal jeg nok hjælpe, hvis du går i stå.
Avatar billede Slettet bruger
23. marts 2003 - 21:39 #6
Har ikke fået kigget på det endnu, skal nok vende tilbage.
Avatar billede olebole Juniormester
23. marts 2003 - 21:41 #7
Jaja ... jeg har ikke travlt  :)
Avatar billede Slettet bruger
23. april 2003 - 18:43 #8
Det får jeg vist aldrig rodet videre med.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester