Avatar billede wolfgang Praktikant
18. november 2005 - 09:24 Der er 14 kommentarer og
1 løsning

kontekstafhængig menu

Hej,

Jeg sidder med et ønske om at lave en menufunktion, der skal kunne bruges på flere sider uden tilretning.

Som udgangspunkt er det vel noget med at udskrive resultatet via innerHTML til et DIV?

Min tanke var at have et script, hvor alle mulige menu-options er klargjort. For at tilpasse menuen indhold og værdier til den aktuelle side, hvor menuen bruges kunne man så kalde menuen vha. functionen og en række "parametre".
F.eks. doMenu(1,1,0,1,0,1,158) - hvor de første 6 tal er status for et menuemne og det sidste er ID fra databasen.

Er der nogen, der vil komme et simpelt eksempel på hvorledes det skal gribes an?

Glæder mig til at høre fra jer.

Med venlig hilsen
Avatar billede cayman Nybegynder
18. november 2005 - 11:05 #1
Bruger du asp, jsp, php eller lignende?
Avatar billede cayman Nybegynder
18. november 2005 - 11:07 #2
Skal det være en fast venstremenu eller en dropdown?
Avatar billede wolfgang Praktikant
18. november 2005 - 11:11 #3
Hej CayMan,

Menuen skal bruges i en liste - et udtræk fra min DB.
Dvs. Når der klikkes på en linje(tekst) kommer menuen frem ved den tekst.

Jeg benytter mig ASP (VB Script).

Håber at ovenstående information kan bruges.
Avatar billede cayman Nybegynder
18. november 2005 - 11:26 #4
Det som jeg prøver at luske ud af dig er om menuen, i sig selv, skal dannes med javascript. Hvis det er en rullegardin-menu, så er javascript uundgåeligt. Hvis det er en venstremenu, så kan den laves uden brug af javascript.

Du vil gerne have dynamik i menuen. Er det muligt at reloade siden når menuen skal ændre sig - for så behøver du ikke script.
Avatar billede wolfgang Praktikant
18. november 2005 - 11:40 #5
Hmm... Jeg prøver lige at forklare min problemstilling/ønske lidt bedre.

I forbindelse med et website, hvor der trækkes indhold ud fra en DB (ASP), vil jeg gerne have et javascript, jeg kan kalde når det er nødvendigt.
Det skal kunne "levere" en menu, der passer til den tekst/punkt der er klikket på.
Denne menu kunne f.eks. indeholde Print, Rediger, Send pr. mail, etc...

Min tanke er, at man i scriptet kunne klargøre alle muligheder i menuen og så kun kalde dem der er brug for, vha. linket på siden.

F.eks. noget ala
function doMenu(menupunk1,menupunk2,menupunk3,menupunk4)
+ Kode...

Linket ser således ud: doMenu(1,1,0,1)
Er værdien =1 skal det menupunkt med i den viste menu.

Som en del af funktionen, skal der vel laves en form for løkke, der tjekker om værdi=1 så skal punktet med.

Jeg forestiller mig, at det er noget med at udskrive resultatet via innerHTML til et DIV?

Grunden til mit ønske er, at jeg kun vil vedligeholde menuen et sted og så blot kalde den efter behov.
Avatar billede cayman Nybegynder
18. november 2005 - 11:52 #6
Ok -
Til spm omkring innerHTML, så er det et okay redskab. Der er dog lidt browser kompabilitetsproblemer.

Men du kan også vælge at danne html'en direkte i javascriptet..

createElement er en fantastisk funktion som du bør tjekke ud. Jeg har lavet ALLE mine dynamiske menuer ved brug af denne.

http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createelement.asp?frame=true
Avatar billede wolfgang Praktikant
18. november 2005 - 12:01 #7
Det ser spændende og nyttigt ud.
Kan du komme med et eks. på brug, hvor det bliver trukket i et div, ved aktive element?

Glæder mig til høre mere.
Avatar billede cayman Nybegynder
18. november 2005 - 12:28 #8
<div onclick="activateMenu(new Array('Menupkt 1','Menupkt 2'), new Array('Url 1','Url 2'), this)">

(Et menupunkt pr url)

function activateMenu(textList, urlList, parentObject){
// Dit div object fra før er her lig med parentObject
 
  for (var i =0; i<textList.length(); i++){
      // Løber menuliste igennem
      var text= document.createTextNode(textList[i]);
      var aTag = document.createElement('a');
      aTag.href=urlList[i];
      aTag.appendChild(text);
      parentObject.appendChild(aTag);
  }
}

Det er rystet lidt ud af ærmet, men du kan se omdu ikke kan få det til at virke.
Det kan godt være at dit parentObject ikke skal være den DIV du klikker på men derimod et andet tag på din side, men det ved du bedst :o)
Avatar billede wolfgang Praktikant
18. november 2005 - 12:41 #9
Hej, Det giver mig umiddelbart det omvendte resultat.
I dit eksempel er menuens indhold defineret i selve linket og ikke i scriptet :(
Avatar billede cayman Nybegynder
18. november 2005 - 12:51 #10
Yes - det var et sidespring udi createElements fortræffeligheder..:o)

Ok.

Heres what to do:

<div onclick="activateMenu(new Array(1,0,0,1));">
(Vis menupunkt i position 0 og 3. Vis ikke dem i pos 1 og 2)

Ovenover i din head-sektion
<script>
var urlList= new Array('xx.html','xx.html','xx.html','xx.html');
var textList= new Array('xx','xx','xx','xx');

function activateMenu(showList){
  var parentObject = document.getElementById('menuHovedDiv');

  // Vi må hellere fjerne tidligere menupunkter først
  var childCol=span.childNodes;
  for (var i=0; i<childCol.length; i++){
    span.removeChild(childCol[i]);
  }

  // Så appender vi nye menupunkter
  for (var i =0; i<textList.length(); i++){
      // Løber menuliste igennem
      if (showList[i]==1){
          var text= document.createTextNode(textList[i]);
          var aTag = document.createElement('a');
          aTag.href=urlList[i];
          aTag.appendChild(text);
          parentObject.appendChild(aTag);
      }
  }
}
</script>
Avatar billede wolfgang Praktikant
18. november 2005 - 12:54 #11
Det ser mere rigtig ud :)

Jeg tester lige og vender tilbage hurtigst muligt.
Avatar billede wolfgang Praktikant
21. november 2005 - 13:19 #12
Hej igen,
Nu har jeg testet og jeg kan desværre ikke få det til at virke hos mig :(
Avatar billede wolfgang Praktikant
21. november 2005 - 13:25 #13
Derfor vil jeg gøre have en function med udgangspunkt i følgende.

1) En js function der kan inkluderes på de ønskede sider.
2) Nem at vedligeholde og kalde

Kan det laves ala: (Se ovenstående)
function doMenu(menupunkt1,menupunkt2,menupunkt3,menupunkt4)

if menupunkt1=1
innerHTML=menupunkt1 med grafik etc...

if menupunkt1=2
innerHTML=menupunkt1 med grafik etc...

Man skulle således kunne kalde menuen med noget ala
doMenu(1,1,0,1)

Menuen skulle gerne kunne udskrives i et div i området, hvor der er klikket med musen.

jeg håber at ovenstående kan lade sig gøre.
Avatar billede wolfgang Praktikant
21. november 2005 - 13:26 #14
Er jeg helt på afveje?
Avatar billede wolfgang Praktikant
21. november 2005 - 13:45 #15
Jeg tror hellere at jeg må lukke dette spørgsmål og oprette et nyt.
Så skulle der være styr på sagerne.
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