Avatar billede jammerlab Nybegynder
05. november 2003 - 17:30 Der er 16 kommentarer og
1 løsning

Problemer med layers <div>

Ok følgende kode benytter jeg mig af for at skabe en menu:

  <script type="text/javascript">

    function checkMenu(id) {
      if (id.indexOf("menu")+4==id.length){
        return true;
      }
      return false;
    }

    function mover( obj ) {
      var menu = document.getElementById( obj + "menu" ) ;

      var allElms = document.getElementsByTagName("div");

      for (i=0;i<allElms.length;i++){
        if (checkMenu(allElms[i].id)) {
          if (allElms[i]==menu){
            menu.style.display = "block" ;
          }
          else
          {
            allElms[i].style.display = "none" ;
          }
        }
      }
    }

    function mout( obj ) {
      elm = document.getElementById( obj ) ;

      menu = document.getElementById( obj + "menu" ) ;

      menu.style.display = "none" ;
    }
  </script>

<a href="nyheder.php" id="punkt1" onMouseOver="mover( 'punkt1' )"><img src=gfx/nyheder.gif border=0></a>

<div id="punkt1menu" class="menu" style="left: 35%" onMouseOver="mover( 'punkt1' )"  onMouseOut="mout( 'punkt1' )"><a href=nyheder.php?oldnewz=true><img src=gfx/nyheds_arkiv.gif border=0></a></div>

Ok her er mit problem. Den måde jeg har instillet de layers på fungere perfekt i 1024 x 768 men højere eller lavere så fungere det ikke så godt :) Nogen metode hvorpå jeg altid sikkre mig de layers fremkommer hvor det er meningen? I kan se designet her: http://212.242.60.87/amiciny2/nyheder.php
Avatar billede roenving Novice
05. november 2003 - 17:46 #1
function posDiv(){
var menus = ['punkt1','punkt2','punky3','punkt4'];
var zx=zy=0;
for(i=1;menus.length>i;i++){
elm = document.getElementById(menus[i]);
for(zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
document.getElementById(menus[i]+"menu").style.left=zx+"px";//kan jo reguleres en anelse !-)
}
}

-- og så:

<body onload="posDiv()">
Avatar billede jammerlab Nybegynder
05. november 2003 - 17:48 #2
omg roenving :P Det fattede jeg ikke meget af... går ud fra det er noget java script... hm ... ja okay tror jeg er med forsøger mig lige.
Avatar billede jammerlab Nybegynder
05. november 2003 - 17:49 #3
Ser ud til den laver en fejl på siden.
Avatar billede roenving Novice
05. november 2003 - 17:49 #4
Det er javascript, så husk at putte det ind i en javascript-blok !-)

<script type="text/javascript">

//koden

</script>
Avatar billede jammerlab Nybegynder
05. november 2003 - 20:35 #5
hjælp? :)
Avatar billede roenving Novice
05. november 2003 - 20:39 #6
Du skal beholde dit body-tag, hvor du har det, og så indføje et eller andet sted imellem <html> og </html>:

<script type="text/javascript">
function posDiv(){
var menus = ['punkt1','punkt2','punky3','punkt4'];
var zx=zy=0;
for(i=1;menus.length>i;i++){
elm = document.getElementById(menus[i]);
for(zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
document.getElementById(menus[i]+"menu").style.left=zx+"px";//kan jo reguleres en anelse !-)
}
}
</script>

-- men så ændre body-tagget til:

<body onload="posDiv()">
Avatar billede jammerlab Nybegynder
05. november 2003 - 20:42 #7
kan jeg ikke bare gøre det på denne måde?

<body onload="posDiv()" topmargin="10" bottommargin="10" leftmargin="5" rightmargin="5">

Skal jo gerne bruge de andre settings :P
Avatar billede roenving Novice
05. november 2003 - 20:48 #8
Jo, selvfølgelig kan du det, jeg er bare ikke så vant til, at folk har andet end præcis onload (og måske onresize !-) i <body>-tagget ...

-- og du bør iøvrigt overveje at bruge css -- f.eks. inline og så når vi er igang også sætte onresize på:

<body onload="posDiv()" onresize="posDiv()" style="margin:10px 5px 10px 5px">

-- hvis jeg har husket den normale rækkefølge rigtigt !-)

-- og jeg kiggede lige efter at det havde jeg ...
Avatar billede jammerlab Nybegynder
05. november 2003 - 21:01 #9
Kan ikkse se jeg gør noget forkert? Tjeck min kilde kode... alt står da som det skal??? Men den laver stadig en fejl på siden.
Avatar billede roenving Novice
05. november 2003 - 21:14 #10
Prøv at fjerne:

style="left : 32% ;"

fra dine links !-)

-- og så var der to små fejl i scriptet -- jeg lavede bla. en anelse om i måden undervejs ,-(

function posDiv(){
var menus = ['punkt1','punkt2','punkt3','punkt4'];
var zx=zy=0;
for(i=0;menus.length>i;i++){
elm = document.getElementById(menus[i]);
for(zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
document.getElementById(menus[i]+"menu").style.left=zx+"px";//kan jo reguleres en anelse !-)
//alert(zx)//kan aktiveres for at teste (fjern // i starten af linjen !-)
}
}
Avatar billede jammerlab Nybegynder
05. november 2003 - 21:19 #11
Smukt :) Så fungere det jo perfekt ... smid et svar det er alle de point værd mester ...
Avatar billede roenving Novice
05. november 2003 - 21:26 #12
-- bortset fra, at du mangler en <table><tr><td>-sekvens, så den ser ret sjov ud i Mozilla !-)

Første gang jeg så den, var den iorden, anden gang så det ud som om, det var et mindre problem med borders, men nu er der et stort problem, fordi der mangler ovenstående -- er det noget du lige er kommet til at slette ?-)

-- ellers velbekomme '-)
Avatar billede roenving Novice
05. november 2003 - 21:29 #13
-- det skal siges, at problemet med borders ofte fremkommer, fordi IE (fejlagtigt !-) lægger en border indenfor elementets grænser, selv om standarden siger at det _skal_ lægges udenom ...

Måden at komme omkring det er, at lave elementerne en anelse smallere og sætte margin og border til samme bredde !o]
Avatar billede jammerlab Nybegynder
05. november 2003 - 21:43 #14
jep... måske kan du svarer på noget andet inden vi slutter af... prøv at gå ind på siden og kør ned i meunen... altså i et af de layers du åbner... den forsvinder med det samme selvom man kører musen der ned :/
Avatar billede roenving Novice
05. november 2003 - 21:51 #15
Du har da fået lavet noget sjovt noget, eller sidder du og roder hele tiden og får lavet noget mærkeligt ?-)

style=onmouseOver="mover( 'punkt1' )

skal selvfølgelig være:

onmouseOver="mover( 'punkt1' )"
Avatar billede jammerlab Nybegynder
05. november 2003 - 21:51 #16
lol man ... jeg må være godt træt... pinligt.. :D Thx igen
Avatar billede roenving Novice
05. november 2003 - 21:54 #17
-- og tak for points ;~}
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