Avatar billede tow Nybegynder
07. april 2003 - 16:49 Der 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.


Forslag??
Avatar billede olebole Juniormester
07. april 2003 - 17:19 #1
<ole>

<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 posLayer(elm) {
    document.getElementById("MitLag").style.top = getPos(elm).y;
}
</script>
<div id="MitLag">blablabla</div>
<form>
    <input type="radio" onmoueseover="posLayer(this)">
</form>

/mvh
</bole>
Avatar billede olebole Juniormester
07. april 2003 - 17:21 #2
Det kræver naturligvis, du har sat position til absolute på 'MitLag'  :)

x-koordinaten for radio-knappen får du med: getPos(elm).x
/mvh
Avatar billede olebole Juniormester
07. april 2003 - 17:23 #3
Skal det flyttes til 10 pixels over, skal du naturligvis bare skrive:
  document.getElementById("MitLag").style.top = getPos(elm).y - 10;
Avatar billede tow Nybegynder
07. april 2003 - 17:40 #4
jeg forsøger det lige og vender tilbare

er du klar over fra hvilken Netscape, internet explorer osv version scriptet virker?
Avatar billede olebole Juniormester
07. april 2003 - 17:44 #5
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";
Avatar billede tow Nybegynder
07. april 2003 - 18:09 #6
ok, js er ikk mig, bestemt ikk. Sårn ser det ud og virker ikk:

head:

<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 posLayer(elm) {
    document.getElementById("MitLag").style.top = getPos(elm).y - 10 + "px";
}
</script>



body:


td width="20" bgcolor="#D2664D"><div id="MitLag" style="position:absolute; width:200px; height:115px; z-index:1"></div><input type="radio" onmoueseover="posLayer(this)"></td>
Avatar billede tow Nybegynder
07. april 2003 - 18:09 #7
?
Avatar billede tow Nybegynder
07. april 2003 - 18:15 #8
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......


så er det vist på plads....;)
Avatar billede olebole Juniormester
07. april 2003 - 18:30 #9
Jeg fatter ikke, hvorfor du laver det på den måde. Kan du ikke lægge en URL til siden?
Avatar billede olebole Juniormester
07. april 2003 - 18:35 #10
Under alle omstændigheder skal onmouseover være rigtig stavet ... pas på men copy/paste  ;o)
Det hjælper dog ikke på min forståelse  :)
/mvh
Avatar billede tow Nybegynder
07. april 2003 - 18:50 #11
nej, jeg kan ikke ligge et url til siden.

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


;)
Avatar billede olebole Juniormester
08. april 2003 - 09:51 #12
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
Avatar billede olebole Juniormester
08. april 2003 - 09:54 #13
Dether script er en anelse slankere:

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