Avatar billede hopeless Nybegynder
02. september 2004 - 10:21 Der er 11 kommentarer og
1 løsning

Hjælpetekst funktion

Hej alle,
Jeg sidder med en ide om at jeg godt vil lave en "Hjælp" knap for mine brugere. Og skulle fungerer på samme måde som man kender fra eksisterende programmer.
Ved et klik på en ? (Hjælp) knap, vil der skiftes til en tilstand, hvor pointer først og fremmest skifter til et ?,

dernæst vil den over givne links, tekster mm. jeg har defineret, komme op med et layer/dialogvindue af en art, med hjælpetekst i som passer til elementet man holdte musen over.


Jeg er blank i hvordan man kan lave det, men er det muligt uden at for store svinggerninger?
Avatar billede hopeless Nybegynder
02. september 2004 - 10:22 #1
Man skal også kunne lukke "? Hjælp" tilstanden , ved at trykke på Hjælp knappen igen.
Avatar billede roenving Novice
02. september 2004 - 11:42 #2
Tjah, måske ikke lige helt let og nok ikke uden nogle svinke-ærinder ...

Men hvis du med trykket ændrer værdien af en variabel, sætter en onmouseover på alle de elementer, som skal reagere, og så afhængig af variablens værdi viser f.eks. en overLib-div med noget hjælpe-indhold, er det jo absolut muligt !-)

OverLib: http://www.bosrup.com/web/overlib/
Avatar billede grunken Nybegynder
02. september 2004 - 13:03 #3
Har prøvet at lave et hurtigt eksempel på sagen :o)

- kan med statsgaranti optimeres ;o)

<html>
<head>
  <style type="text/css">
  body,html{
    cursor: auto;
  }

  #tip {
    position:absolute;
    border:1px solid #000;
    font-size:10px;
    width:150px;
    background-color:#FCFDC7;
    display:none;
    padding:3px;
  }
  </style>

  <script type="text/javascript">
  var h=0,ie=(document.all)?1:0,txt=[];

  //hjælpetekster
  txt[0] = "Link Hjælp 1"; //hjælpetekst til help0 etc.
  txt[1] = "Link Hjælp 2";
  txt[2] = "Link Hjælp 3";
  txt[3] = "Tekst Hjælp 1";
  txt[4] = "Textarea Hjælp 1";
 

  function hjlp(b){
    h=(h==0)?1:0;
    b.innerHTML = (h)?"Hjælp fra":"Hjælp til";
    document.body.style.cursor = (h)?"help":"auto";
    e = document.getElementsByTagName("*")
    for(i=0;i<e.length;i++){
      if(e[i].id && e[i].id.indexOf("help")==0){
      if(ie){
        e[i].onmouseover = (h)?new Function("vis(event,'"+e[i].id+"')"):"";
        e[i].onmouseout = (h)?new Function("skjul('','"+e[i].id+"')"):""}
      else{
        if(h){
        e[i].addEventListener('mouseover',vis,false);
        e[i].addEventListener('mouseout',skjul,false);}
        else{
        e[i].removeEventListener('mouseover',vis,false);
        e[i].removeEventListener('mouseout',skjul,false);}
      }
      }
    }
  }

  function vis(e,o){
    if(!e)e=window.event;
    o=(!o)?this:document.getElementById(o);
    t=document.getElementById("tip");

    o.style.cursor = "help";
    s = parseInt(o.id.substring(4)); 

    t.innerHTML = txt[s];
    t.style.top = (ie)?(e.clientY+document.body.scrollTop)+"px":(e.pageY+20)+"px";
    t.style.left = (ie)?(e.clientX+document.body.scrollLeft+10)+"px":(e.pageX)+"px";
    t.style.display = "inline";

  }
  function skjul(e,o){
    t=document.getElementById("tip");
    o=(!o)?this:document.getElementById(o);

    o.style.cursor = "auto";
    t.style.display = "none";
  } 
 
</script>
 


</head>
<body>
  <a href="#" id="help0">Link 1</a><br />
  <a href="#" id="help1">Link 2</a><br />
  <a href="#" id="help2">Link 3</a><br />

  <span id="help3">
    en masse tekst sajkdfkadsjfhkjsadfkjsafg
  </span>

  <form>
  <textarea id="help4"></textarea>
  </form>

  <b><a href="#" onclick="hjlp(this);">Hjælp til</a></b>

  <div id="tip"></div>

</body>
</html>
Avatar billede hopeless Nybegynder
02. september 2004 - 14:04 #4
Hey begge.
Grunken dit eksempel her er helt klart noget jeg kan arbejde videre med og optimere til mit brug. Takker, den er lige i kassen!

Gir du svar?
Avatar billede grunken Nybegynder
02. september 2004 - 15:01 #5
Jamen så smider jeg et svar ;o)

- og god arbejdslyst med projektet :o) - skrive endelig her hvis du kommer i vanskeligheder ;o(
Avatar billede grunken Nybegynder
02. september 2004 - 15:02 #6
at skrive = skriv ;o)
Avatar billede hopeless Nybegynder
02. september 2004 - 16:11 #7
Takker :) Er et offentligt projekt, så en sådan funktion her vil helt sikkert blive vel mødt.
Jeg bruger den flittigt nu, og den virker upåklageligt.


Hvis du kan hjælpe, har jeg et lille problem som jeg har smidt herinde: http://www.eksperten.dk/spm/534968

Hvis jeg skal oprette nyt spm. til den, gør jeg self. det.
Avatar billede grunken Nybegynder
02. september 2004 - 17:29 #8
wee - endelig en offentlig side med en form for brugervenlighed - hurra sagde manden!

Det efterspurgte script vil se sådan her ud - du skal dog notere dig at getElementsByTagName - er en forholdsvis ny funktionalitet - så hvis folk har oldnordiske browsere vil det bare IKKE Fungere ;o)

<style type="text/css">
span{
  display:block;
}
</style>


<script type="text/javascript">
function skjulAlleSpans(){
  e = document.getElementsByTagName("span");
  for(i=0;i<e.length;i++)e[i].style.display = (e[i].style.display=="none")?"block":"none";
}
</script>


<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>

<a href="#" onclick="skjulAlleSpans();return false">skjul/vis</a>
Avatar billede hopeless Nybegynder
02. september 2004 - 19:00 #9
genialt, og tak for tippet
Avatar billede mik789 Nybegynder
03. september 2004 - 07:30 #10
kigger lige forbi efter festen er forbi...

grunken 02/09-2004 13:03:09> cool! lækker stil med at lægge både events og funktionskald op i selve scriptet, så html'en er så godt som renset for scripts. den tager jeg da til mig.... nogle begrænsninger?
Avatar billede grunken Nybegynder
06. september 2004 - 01:12 #11
Mik789 - begrænsninger burde der ingen være af :o) opera + gecko browsere har ingen problemer med w3c's standarder - hvorimod ie som sædvanlig er lidt specielle på dette område, hvilket betyder at hvis der er en event på objektet allerede - så vil disse bliver overskrevet, på den måde jeg har gjort det på ihvertilfælde ;o)

- hvorimode w3c's standarder bare vil tilføje og fjerne dem man beder om - det skal dog her på falderebet nævnes at microsoft har lavet en pendant der hedder attachEvent & detachEvent ( msdn.microsoft.com/workshop/author/ dhtml/reference/methods/attachevent.asp ) men som sagt kun i nyeste versioner af IE!
Avatar billede mik789 Nybegynder
06. september 2004 - 08:35 #12
ok, tak
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