Avatar billede krogstrup Nybegynder
06. september 2004 - 15:11 Der er 9 kommentarer og
1 løsning

Hjælp til dynamisk højrekliks menu

Jeg har lavet mit eget CMS system (hip hurra)

Heri viser jeg kunden den oprettede side-struktur i et "stifinder" lignende træ. Systemet fungerer på nuværende tidspunkt således at der vises en højrekliksmenu når man højreklikker på een af siderne i træet. Så lang så godt.

Problemet er blot at jeg har lavet systemet således at højrekliksmenuen oprettes dynamisk liggende i et selvstændigt lag for HVER eneste side der findes i træet. Dvs. at hvis man har opbygget en side-struktur med 200 sider, ja så ligger der 200 skjulte lag med en højrekliksmenu for hver side.

Det giver unægtelig et meget stort output fra serveren og gør at denne side bliver MEGET tung at hente ned.

Jeg forestiler mig at jeg i stedet for at kalde en funktion der viser et specifikt lag, kalder en funktion som modtager nogle parametre såsom "Sidenavn" & "SideID". Herefter skal javascriptfunktionen dynamisk skabe & vise det lag der skal vises som højrekliksmenu. Herved sparer jeg bunker at kode i mit output fra serveren.

Jeg håber meget at nogen kan give mig en idé om hvordan ovenstående brygges sammen. Giv meget gerne nogle små konkrete kode eksempler da javascript ikke er min stærkeste side.

Jeg forestiller mig altså noget lignende:

<a href="java script:visHøjrekliksMenu('Velkomst siden',45);">Velkomst siden</a>

function visHøjrekliksMenu(sidenavn,sideid)
{
opret dynamisk lag indeholdende:
Overskrift (sidenavn)
Link til redigering af siden (hvor sideID bruges som parameter i link)
}
Avatar billede roenving Novice
06. september 2004 - 17:02 #1
Kan du ikke bare have een udgave, og så ved visning af menuen, sætte udgangspunktet for kaldet i en javascript-variabel, og så lave dine links, så de aflæser den ?-)

Feks. på pindene i træet:

onclick="actDoc=this.id"

-- og så linket:

<a href="#" onclick= "location.href='minEditPage.asp?page='+actDoc;">Redigér side</a>

-- så skal du bare lige have lavet variablen med

var actDoc = "";

-- i en eller anden javascript-blok _udenfor_ funktioner !-)
Avatar billede krogstrup Nybegynder
06. september 2004 - 22:32 #2
det var måske en mulighed - jeg kigger nærmere på det snarest muligt og vender tilbage...
Avatar billede krogstrup Nybegynder
07. september 2004 - 10:29 #3
hej roenving

kunne du hjælpe mig med en anden lille javascript "ting"....?

hvordan udskrives nemmest diverse HTML output blandet med værdier jeg sender til en javascript funktion?

jeg roder med noget lignende:

function displayMenu(pagename) {
var strMenu;
strMenu = "<b>" + pagename + "</b><br>";
return strMenu;
}

document.write displayMenu("Side 1");


men jeg kan ikke helt få det til at virke efter hensigten ?!?
Avatar billede roenving Novice
07. september 2004 - 11:42 #4
-- er det ikke bare fordi du mangler paranteserne ?-)

function displayMenu(pagename) {
return "<b>" + pagename + "</b><br>";
}
document.write(displayMenu("Side 1"));
Avatar billede krogstrup Nybegynder
07. september 2004 - 12:15 #5
jo, du har ret !

Men er det en ok/optimal at gøre det på ?

skal desuden høre i forhold til din foreslåede løsning hvordan jeg kan udskrive tekst i højreklikslaget, som defineres i min oncontextmenu eventhandler på linket ?

Altså...

<a onContextMenu="strLinkTitle='Link 1'; visSkultLag();">Link 1</a>

Højreklikslag:
<div>
<script>document.write(strLinkTitle);</script>
</div>

Ovenstående udskriver kun Undefined i mit lag selvom at variablen er erklæret globalt ?!?
Avatar billede roenving Novice
07. september 2004 - 12:25 #6
Du skal bruge .innerHTML, hvis du skal sætte det op dynamisk, altså f.eks.:

Højreklikslag:
<div id="context" style="position:absolute;display:none;"></div>

-- og så i din visSkjulLag():

var d = document.getElementById('context');
d.innerHTML = strLinkTitle;
d.style.display = 'block';
Avatar billede roenving Novice
07. september 2004 - 12:36 #7
-- og det er sjældent i andet end menuer, som opbygges ved load og forskellige fiflerier med mail-adresser o.l., det vil være den bedste måde at bruge document.write ...

-- og selv i de tilfælde er det ikke noget problem at gøre det med de dynamiske metoder !-)

-- det vil så ikke virke, hvis folk har meget gamle browsere, men personligt har jeg sat grænsen for det, jeg selv medtænker automatisk, ved cirka IE5 og Netscape/Mozilla !o]
Avatar billede krogstrup Nybegynder
07. september 2004 - 13:33 #8
takker mange gange for din hjælp :-)

Smider du et svar ?
Avatar billede roenving Novice
07. september 2004 - 13:40 #9
Velbekomme '-)
Avatar billede roenving Novice
07. september 2004 - 14:03 #10
-- og tak for point ;~}
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