Avatar billede bombur Nybegynder
14. april 2006 - 17:53 Der er 12 kommentarer og
1 løsning

Popup hjælpetekst

Jeg har sådan et lille spørgsmålstegn som man skal kunne klikke på for at få en lille hjælpepopup.

Det ville også være nemt nok hvis ellers jeg havde syntes en alm popup script ting var god nok.

Min popup skal helst være skrevet i html, så den også kan indeholde billeder og gennerelt kan opsættes som jeg har lyst.
Desuden skal den komme op så tæt på mit spørgsmålstegn som muligt og ikke ligne et nyt vindue. :-)
Jeg er klar over at jeg forlanger meget, men jeg er heller ikke klar over hvad der i realiteten er muligt.

Jeg vil være tilfreds med hvad end i kan give mig, som kommer tættest på.

Hilsen
Rune
Avatar billede thesurfer Nybegynder
14. april 2006 - 18:25 #1
Du bruger bare et almindeligt div-tag.. Den kan indeholde HTML koder.

Det kan være at jeg kan lave et eksempel til dig, i løbet af dagen/aftenen.. hvis ikke andre gør det først..

/theSurfer
Avatar billede thesurfer Nybegynder
14. april 2006 - 18:47 #2
Er spørgsmålstegnet placeret et bestemt sted (f.eks. oppe i højre hjørne), eller det spørgsmålstegnet midt i en tekst?

/theSurfer
Avatar billede mclemens Nybegynder
14. april 2006 - 19:02 #3
to links og et eksempel baseret på første link...
http://www.eksperten.dk/spm/700382#rid6193072 <- brugt i eksemplet
http://www.eksperten.dk/spm/700575#rid6192871 <- lidt anderledes...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
<!--

mychkvar=-1;

var IE=document.all?true:false;
if(!IE)document.captureEvents(Event.mousemove)
document.onmousemove=mousepos;
var cury=0;
var curx=0;

function mousepos(e){
if(IE){
myscrolltop=(tmenu=document.documentElement.scrollTop)? tmenu : document.body.scrollTop;
myscrollleft=(lmenu=document.documentElement.scrollLeft)? tmenu : document.body.scrollLeft;
tmpy=event.clientY+myscrolltop;
tmpx=event.clientX+myscrollleft;
}else{
tmpy=e.pageY;
tmpx=e.pageX;
myscrolltop=0;
myscrollleft=0;
}
cury=tmpy;
curx=tmpx;
}

tmpx1=0;
tmpx2=0;
tmpy1=0;
tmpx2=0;
tmpx1b=0;
tmpx2b=0;
tmpy1b=0;
tmpx2b=0;
tmpcurnode="";


function hideshowdiv(tmpid,tmpcur,pleft,ptop){
mychkvar=1;
if(tmpid=document.getElementById(tmpid)){
  if(tmpcurnode!="")tmpcurnode.style.visibility='hidden';
  tmpcurnode=tmpid;

  xleft=tmpcur.offsetLeft;
  xtop=tmpcur.offsetTop;
  tmpcur2=tmpcur;
  while(tmpcur2=tmpcur2.offsetParent){
  xleft=xleft+tmpcur2.offsetLeft;
  xtop=xtop+tmpcur2.offsetTop;
  }

  tmpy1b=xtop;
  tmpx1b=xleft;
  tmpy2b2=xtop+tmpcur.offsetHeight;
  tmpx2b=xleft+tmpcur.offsetWidth;




  if(pleft!="d"){
  tmpid.style.top=xtop+ptop+"px";
  tmpid.style.left=xleft+pleft+"px";
  }else{
  tmpid.style.top=tmpy2b2+"px";
  tmpid.style.left=xleft-tmpcur.offsetLeft+"px";
  }

  tmpid.style.visibility='visible';
  tmpy1=tmpid.offsetTop;
  tmpx1=tmpid.offsetLeft;
  tmpy2=tmpid.offsetTop+tmpid.offsetHeight;
  tmpx2=tmpid.offsetLeft+tmpid.offsetWidth;
}
}

window.onload=runhidectrl;
function runhidectrl(){
if(tmpcurnode!=""){
  if((curx<tmpx1)||(curx>tmpx2)||(cury<tmpy1)||(cury>tmpy2)){
  if((curx<tmpx1b)||(curx>tmpx2b)||(cury<tmpy1b)||(cury>tmpy2b2)){
    tmpcurnode.style.visibility="hidden";
  }
  }if(mychkvar==0)tmpcurnode.style.visibility="hidden";
}
setTimeout("runhidectrl();",100);
}
//-->
</script>

</head>


<body>

<br><br><br><br><br><br><br><b onmouseover="hideshowdiv('menu1',this,0,0)" style="text-decoration:none;">?</b><br><br><br><br>

<b onmouseover="hideshowdiv('menu1',this,100,0)" style="text-decoration:none;">?</b><br><br>
<b onmouseover="hideshowdiv('menu1',this,'d','d')" style="text-decoration:none;">?</b>

<div id="menu1" style="visibility:hidden;position:absolute;top:0px;left:0px;background-color:green;"><br>
<b>abc</b><br>
<h1>def</h1>
</div>

</body></html>
Avatar billede bombur Nybegynder
14. april 2006 - 19:12 #4
Jeg finder lige ud af om det virker for mig.
Avatar billede mclemens Nybegynder
14. april 2006 - 19:24 #5
[ Jeg finder lige ud af om det virker for mig. ]
ok :) opret selv flere menu div...
de skal bare placeres lige før </body>
og ikke inden i noget andet indhold...
de placerer sig selv udfra dette:

hideshowdiv('menu1',this,0,0) <- for placering lige ovenpå objektet
hideshowdiv('menu1',this,'d','d') <- for placering lige under objektet
hideshowdiv('menu1',this,100,200) <- for placering 100px mod højre og 200 pixels nede i forhold til objektet
hideshowdiv('menu1',this,-100,-200) <- for placering 100px mod venstre og 200 pixels oppe i forhold til objektet
Avatar billede mclemens Nybegynder
14. april 2006 - 19:28 #6
Id der bruges på div'en er underordnet de skal bare være forskellige
og matche med med det der står i hideshowdiv opkaldet :)
Avatar billede mclemens Nybegynder
14. april 2006 - 19:33 #7
setTimeout("runhidectrl();",100);
^ og hvis settimeout... (100) øges går der flere milisekunder før den div der er dukket frem forsvinder igen når man kører ud af teksten/knappen der fik den til at dukke frem eller den div der er dukket frem... hvis den sænkes forsvinder div'en hurtigere igen når man forlader div'en eller teksten/knappens område :)
Avatar billede mclemens Nybegynder
14. april 2006 - 19:41 #8
og hvis den skal forsvinde ved klik på en ting inde i den åbnede div skal denne ting have denne onclick: onclick="document.getElementById('menu1').style.visibility='hidden';"

... så har jeg vist ikke mere input på den ...
(den skal nok rettes en dag så den kører display none eller block... istedet)
Avatar billede bombur Nybegynder
14. april 2006 - 20:20 #9
Det er perfekt! intent mindre. Lige hvad jeg manglede.

Du får dubbel 5 (Sorry, ser lige scenen er din imens jeg koder :P )

Giv et svar, så får du point.
Avatar billede mclemens Nybegynder
14. april 2006 - 20:26 #10
hehe, her er et svar ;)
Avatar billede mclemens Nybegynder
16. april 2006 - 10:44 #11
tilføj evt. onmouseover="mychkvar=0;" til dine iframes som f.eks. her:

<iframe name="I1" width="747" height="295" src="text.htm" marginwidth="1" marginheight="1" border="0" frameborder="0" onmouseover="mychkvar=0;">

... det kan hjælpe hvis boksen ikke forsvinder når du kører ind i en anden frame
Avatar billede mclemens Nybegynder
18. april 2006 - 22:31 #12
tak for point :)
Avatar billede mclemens Nybegynder
29. august 2006 - 01:02 #13
kaster lige en kommentar her af hensyn til andre der falder over tråden...

visibility bør erstattes af display
visible bør ersattes af block
hidden bør erstattes af none
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