18. november 2005 - 09:24Der 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?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.
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.
<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)
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>
Jeg tror hellere at jeg må lukke dette spørgsmål og oprette et nyt. Så skulle der være styr på sagerne.
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.