07. april 2003 - 16:49Der er
12 kommentarer og 1 løsning
ShowHide layer ved anchor?
Allright, tror det her er en tuff én....
Jeg skal ha en mouseOver på en radiobutton til at vise et layer 10 px ovenover det sted hvor man mouseOver´. Forklaring følger:
Jeg har et spørgeskema indeholdende radiobuttons der hver især indeholder nogle værdier. Jeg ved med sikkerhed hvor disse radiobuttons er placeret fra venstre, da det altiud er det samme. Altså; jeg kan godt definere hvor mit layer skal være placeret fra venstre kant af min side.
MEN; jeg kan ikke definere en fast top placering for layeret, da der kan være et hvilket somhelst antal radiobutton nedefter på min side.
Og det er så her at jeg bare skal ha´ lavet, på en eller anden måde (!), en relativ top placering for mit layer (altså de 10 px. ovenover det sted hvor man mouseOver´)
Jeg har tænkt mig et eller andet med at layeret skulle vises ved et anchor som jeg så bare sætter ind de 10px. over (det hele kører dynamisk nemlig), men hvordan og om det overhovedet ka la´ sig gøre aner jeg ikk. Altenativt og endnu bedre måske, er hvis man bare ku skrive at layeret sku vises 10px over musemarkørens punkt.
Fra IE4 og NS6 ...... og du bør i øvrigt nok lige afslutte med +"px" ... det har NS det bedst med :) document.getElementById("MitLag").style.top = getPos(elm).y - 10 + "px";
ved ikk om det har nogen betydning eller om jeg fik forklaret det ordentligt, men det er sådan at man opretter et spørgesekam gennem noget admin værk, hvor de indtastede data så trækkes ud på selve min side.
antallet af radiobuttons variere så efter hvor mange spørgmål (af typen der bruger radiobutton) jeg har oprettet.
Hvilket vil sige: at har jeg oprettet 30 spørgsmål med radiobutton skal det respektive lag vises ved hver af de 30 spørgsmål (10 px over radiobutton´en), når man kører markøren henover radiobutton´en......
hvorfor "fatter" du ikk´ at jeg laver det på den her måde? Lad mig sidge det sådan at måden det er lavet på i html er den måde det skal være, sårn er det.
Det jeg ikk fatter er hvordan jeg laver mouseover show layer tingen.....men det måske oss´ det du ikke fatter jeg ikk fatter...?
Hmmm .... det fik jeg ikke så meget ud af :) Du kan gøre det på denne måde:
<script type="text/JavaScript"> function getPos(elm) { for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent); return {x:zx,y:zy} } function showLayer(elm) { var oID = elm.id.split("_")[1]; var o = document.getElementById("L_"+oID); o.style.top = getPos(elm).y - 10 + "px"; o.style.visibility = "visible"; } function hideLayer(elm) { var oID = elm.id.split("_")[1]; var o = document.getElementById("L_"+oID); o.style.visibility = "hidden"; } </script> <td width="20" bgcolor="#D2664D"> <div id="L_0" style="position:absolute; width:200px; height:115px; visibility:hidden; z-index:1">Tekst</div> <input id="R_0" type="radio" onmouseover="showLayer(this)" onmouseout="hideLayer(this)"></td>
Det er måske ikke så smart at lægge event-handlerne på radio-knappen. Det ville nok være bedre at lægge dem på <td>'en - men husk så også at flytte knappens 'id' over på cellen, da id'en bruges til at identificere det tilhørende lag. Grunden til, jeg ikke synes, det er så smart, er knappens lille fysiske udstrækning .... der er ikke så meget at 'ramme' med musen - men det finder du nok ud af ;o) /mvh
<script type="text/JavaScript"> function getPos(elm) { for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent); return {x:zx,y:zy} } function showLayer(elm) { var oID = elm.id.split("_")[1]; window.o = document.getElementById("L_"+oID); o.style.top = getPos(elm).y - 10 + "px"; o.style.visibility = "visible"; } function hideLayer(elm) { o.style.visibility = "hidden"; } </script>
Synes godt om
Ny brugerNybegynder
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.