Avatar billede gerri Nybegynder
17. september 2001 - 15:59 Der er 45 kommentarer og
2 løsninger

Problem med collaps menu

Jeg har et problem der haster og håber der er nogle der kan hjælpe mig hurtigst muligt!!!

Jeg har lavet et website hvor jeg bruger en collaps-menu, der er omtales i denne tråd: http://www.eksperten.dk/spm/93494

Menuen virker stort set som den skal, bortset fra én enkelt lille ting. Den letteste måde at forklare problemet på, er nok at gå ind på siden 
( www.lindepartners.com) og gøre følgende:

- Tryk på menupunktet ”Lindepartners” - Når dette gøres ruller menuen ned som den skal!!

- Tryk derefter på menupunktet ”The Concept” - Her ruller menuen ligeledes ned som den skal og undermenuen til punktet ”Lindepartners” foldes sammen

- Tryk derefter på menupunktet ”Contact”  - Hertil er der ingen underpunkter (og det skal der heller ikke være) MEN den udfoldede undermenu under ”The Concept” folder IKKE sammen.

Jeg vil gerne have, at undermenuen altid folder sig sammen ved tryk på et andet menupunkt!!!

Denne menu styres af 4 js-filer, som kan fremsendes eller kopier herind, hvis der er nogen der vil se på problemet.

På forhånd tak for hjælpen!!
Avatar billede olebole Juniormester
17. september 2001 - 16:04 #1
<ole>
Endelig en adresse, der pegede det rigtige sted hen  =o)
Prøv:
  <a href=\"perform.htm\" onclick=\"collapse.toggle(3);\" class=\"menu1\" target=\"mainFrame\">Performance</a>

/mvh
</bole>
Avatar billede gerri Nybegynder
17. september 2001 - 16:06 #2
Hehe...ja, det gik ikke lige så godt med at få den adresse nedskrevet!!

Jeg prøver lige med dit forslag!!!
Avatar billede Slettet bruger
17. september 2001 - 16:07 #3
D\'oh! Du er alt for hurtig, Olebole! Lige mit forslag!
Avatar billede olebole Juniormester
17. september 2001 - 16:08 #4
Hehe.....næhhhhh.....du er for langsom, phoenixv  =o)
Avatar billede Slettet bruger
17. september 2001 - 16:10 #5
Ja, sådan kan man jo også se på det... Men det andet lyder bedre i mine ører, så lad os holde os til den forklaring! @:-))
Avatar billede gerri Nybegynder
17. september 2001 - 16:16 #6
Olebole>> Det virker NÆSTEN!! -men der er inden point før den virker HELT :o)

Den folder ganske vist de andre underpunkter sammen når man nu trykker på \"Performance\"

-MEN det er som om \"den tror\" at der er underpunkter under performance, og skubber de andre menupunkter lidt nedaf!!
(giver det mening???)

Avatar billede olebole Juniormester
17. september 2001 - 16:17 #7
Du bliver nødt til at vise os, hvad der sker med en URL  :)
Avatar billede gerri Nybegynder
17. september 2001 - 16:19 #8
Det tænkt jeg nok...!

Giv mig lige 2 min!
Avatar billede Slettet bruger
17. september 2001 - 16:20 #9
Gerri>> Ja, for Oleboles forslag går ud på netop at få scriptet til at skubbe \"Performance\" frem, men da der jo ikke er menupunkter, så skulle den helst ikke gøre noget... Men det gør den så alligevel...
Jeg skal nok bruge noget mere kode til at kunne gennemskue problemet...
Avatar billede gerri Nybegynder
17. september 2001 - 16:27 #10
Avatar billede olebole Juniormester
17. september 2001 - 16:33 #11
Prøv med:
  <div id=\"CollapseMenu0Block3Content\" style=\"font-size:1px;height:1px;\"></div>
Hjælper det på problemet?
/mvh
Avatar billede Slettet bruger
17. september 2001 - 16:37 #12
Prøv at indsætte dette script på siden:

<script>
klik = new Array();
klik[1] = false;
klik[2] = false;
klik[3] = false;
klik[4] = false:
function regKlik(tal) {
if (klik[tal] == false) {
klik[tal] = true;
for (i = 0; i < tal; i++) {
klik[i] = false;
}
for (i = tal + 1; i < 5; i++) {
klik[i] = false;
}
}
else {
for (i = 0; i < 5; i++) {
klik[i] = false;
}
}
}

function luk() {
for (i = 0; i < 5; i++) {
if (klik[i] == true) {
rigtig = i;
break;
}
}
collapse.toggle(i)
}
</script>

Og så skal du ved hvert link, der skal kollapse skrive sådan her:
<a href=\"java script:collapse.toggle(0); regKlik(0)\" class=\"menu1\">Linde Partners</a>
<a href=\"java script:collapse.toggle(1); regKlik(1)\" class=\"menu1\">The Concept</a>
<a href=\"java script:collapse.toggle(2); regKlik(2)\" class=\"menu1\">Products</a>
<a href=\"java script:collapse.toggle(4); regKlik(4)\" class=\"menu1\">Value Magazine</a>

Og ved de links, der ikke skal kollapse, skal du skrive følgende:
<a href=\"perform.htm\" onClick=\"luk()\" class=\"menu1\" target=\"mainFrame\">Performance</a>
Avatar billede gerri Nybegynder
17. september 2001 - 16:38 #13
Olebole>>
Tjaa...det hjælper da lidt, men det er stadig ikke helt godt!!

Det giver to små hak nedad, på ingen måde så meget som før, men det kan stadig ses!
Avatar billede Slettet bruger
17. september 2001 - 16:39 #14
P.S. Det ville være enklere, hvis du indbyggede dette i dine eksterne funktioner, men det er lidt svært uden nogle koder...
Avatar billede olebole Juniormester
17. september 2001 - 16:39 #15
Jamen, de skal jo netop allesammen kollapse  :)
Avatar billede whatever Nybegynder
17. september 2001 - 16:40 #16
Er det ikke bedre at bruge collapse.close(i) istedet for collapse.toggle(i). Ifølge dokumentationen, kan close(i) bruges til at lukke et menupunkt med.
Avatar billede Slettet bruger
17. september 2001 - 16:40 #17
Ja, OK Olebole, din ordkløver! :-)
Jeg mener selvfølgelig alle dem, der IKKE selv skal folde ud, og SKAL få andre evt. udfoldede menupunkter til at folde ind!
Avatar billede Slettet bruger
17. september 2001 - 16:41 #18
whatever>> JO! Hvis denne funktion altså findes, så er det selvfølgelig en metode, som kan bygges ind i mit script, for at gøre det hele nemmere. Men mit script skulle vist virke...
Avatar billede Slettet bruger
17. september 2001 - 16:43 #19
Hov!
klik[4] = false:
skal ændres til
klik[4] = false;
Avatar billede whatever Nybegynder
17. september 2001 - 16:43 #20
Den findes, jeg har gemt hele siden med IE. Så jeg kunne kigge lidt i js-filerne.
Se nederst på denne side: http://www.dansteinman.com/dynduo/en/collapsemenu.html
Avatar billede Slettet bruger
17. september 2001 - 16:46 #21
Ups, igen! Linksene skal se sådan her ud (dem, der kan foldes ud):
<a href=\"java script:collapse.toggle(1); regKlik(0)\" class=\"menu1\">Linde Partners</a>
<a href=\"java script:collapse.toggle(2); regKlik(1)\" class=\"menu1\">The Concept</a>
<a href=\"java script:collapse.toggle(3); regKlik(2)\" class=\"menu1\">Products</a>
<a href=\"java script:collapse.toggle(4); regKlik(4)\" class=\"menu1\">Value Magazine</a>

Og funktion luk() skal se sådan her ud:
function luk() {
for (i = 0; i < 5; i++) {
if (klik[i] == true) {
rigtig = i;
break;
}
}
if (rigtig == 4) {
collapse.toggle(5);
}
else {
collapse.toggle(i);
}
}

(Jo, nu er det vist rigtig nok)
Avatar billede Slettet bruger
17. september 2001 - 16:48 #22
OK, whatever! :-)
Men det ændrer nu ikke på mit script, har jeg fundet ud af...
Avatar billede Slettet bruger
17. september 2001 - 16:50 #23
NEJ, hvor er jeg dum!
SÅDAN HER skal linksene se ud:

<a href=\"java script:collapse.toggle(0); regKlik(1)\" class=\"menu1\">Linde Partners</a>
<a href=\"java script:collapse.toggle(1); regKlik(2)\" class=\"menu1\">The Concept</a>
<a href=\"java script:collapse.toggle(2); regKlik(3)\" class=\"menu1\">Products</a>
<a href=\"java script:collapse.toggle(4); regKlik(4)\" class=\"menu1\">Value Magazine</a>
Avatar billede olebole Juniormester
17. september 2001 - 16:50 #24
\'close()\' bliver tilført som metode på menu-objektet i denne fil: \'js/collapsemenu.js\'. Du har helt ret, whatever! Måske er det metoden at bruge - men det *er* faktisk den, du bruger i \'toggle()\' =o)
Avatar billede Slettet bruger
17. september 2001 - 16:52 #25
Ja, Olebole, det var det jeg lige fandt ud af! :-)
Avatar billede gerri Nybegynder
17. september 2001 - 16:55 #26
Ok...jeg er lige lidt forvirret over alt det der er blevet skrevet!!

Jeg er iøjeblikket ved at forsøge det Phoenixv foreslå! Det går ikke lige så hurtigt, men giv mig lige lidt tid!!!
Avatar billede Slettet bruger
17. september 2001 - 17:00 #27
Jeg har opdaget endnu en fejl! Her kommer hele scriptet, HELT rettet:

<script>
klik = new Array();
klik[1] = false;
klik[2] = false;
klik[3] = false;
klik[4] = false:
function regKlik(tal) {
if (klik[tal] == false) {
klik[tal] = true;
for (i = 1; i < tal; i++) {
klik[i] = false;
}
for (i = tal + 1; i < 5; i++) {
klik[i] = false;
}
}
else {
for (i = 1; i < 5; i++) {
klik[i] = false;
}
}
}

function luk() {
for (i = 1; i < 5; i++) {
if (klik[i] == true) {
rigtig = i;
break;
}
}
if (rigtig == 4) {
collapse.toggle(5);
}
else {
collapse.toggle(i);
}
}
</script>
Avatar billede whatever Nybegynder
17. september 2001 - 17:02 #28
Du har endnu en fejl. klik[4] = false: skal rettes til klik[4] = false;
Avatar billede Slettet bruger
17. september 2001 - 17:02 #29
Nårh, jo! Tak, whatever! :-)
Avatar billede whatever Nybegynder
17. september 2001 - 17:04 #30
Den kører stadig væk lidt ned når du trykker på performence, så prøv istedet følgende:
<script language=\"Javascript\">
klik = new Array();
klik[0] = false;
klik[1] = false;
klik[2] = false;
klik[4] = false;
function regKlik(tal) {
if (klik[tal] == false) {
klik[tal] = true;
for (i = 1; i < tal; i++) {
klik[i] = false;
}
for (i = tal + 1; i < 5; i++) {
klik[i] = false;
}
}
else {
for (i = 1; i < 5; i++) {
klik[i] = false;
}
}
}

function luk() {
for (i = 1; i < 5; i++) {
if (klik[i] == true) {
rigtig = i;
break;
}
}
if (rigtig == 4) {
collapse.close(5);
}
else {
collapse.close(i);
}
}
</script>

<a href=\"java script:collapse.toggle(0); regKlik(0)\" class=\"menu1\">Linde Partners</a>
<a href=\"java script:collapse.toggle(1); regKlik(1)\" class=\"menu1\">The Concept</a>
<a href=\"java script:collapse.toggle(2); regKlik(2)\" class=\"menu1\">Products</a>
<a href=\"java script:collapse.toggle(4); regKlik(4)\" class=\"menu1\">Value Magazine</a>

<a href=\"perform.htm\" onClick=\"luk()\" class=\"menu1\" target=\"mainFrame\">Performance</a>
Avatar billede Slettet bruger
17. september 2001 - 17:08 #31
Det er altså meget smartere at holde sig til min regKlik()-funktion (på grund af løkkerne i scriptet), og så bare ændre luk() lidt (selvom jeg nu ikke kan se, hvorfor det ikke skulle virke):

function luk() {
for (i = 1; i < 5; i++) {
if (klik[i] == true) {
rigtig = i;
break;
}
}
if (rigtig == 4) {
collapse.close(4);
}
else {
collapse.close(i - 1);
}
}
Avatar billede Slettet bruger
17. september 2001 - 17:09 #32
Nu kan jeg godt se, hvorfor det ikke virker! Brug mit nye luk()-script!
Avatar billede gerri Nybegynder
17. september 2001 - 17:12 #33
phoenixv>>
Er du ikke sød at indsætte hele scriptet igen, da jeg snart ikke ved hvad der høre til hvad!!!
Avatar billede Slettet bruger
17. september 2001 - 17:21 #34
Lige et øjeblik... Jeg er i gang med at finde på en alt. løsning!
Avatar billede gerri Nybegynder
17. september 2001 - 17:23 #35
ok...bare det kommer til at virke, så er jeg glad :o)
Avatar billede whatever Nybegynder
17. september 2001 - 17:32 #36
Okay her kommer en meget nemmere løsning som virker:
<script language=\"javascript\">
function luk() {
collapse.close(0);
collapse.close(1);
collapse.close(2);
collapse.close(4);
}
</script>

Ved links som ikke skal kunne kollapse skal se sådan ud:
<a href=\"perform.htm\" onClick=\"luk()\" class=\"menu1\" target=\"mainFrame\">Performance</a>

Så burde det virke.
Avatar billede Slettet bruger
17. september 2001 - 17:33 #37
YES, endelig! Nu virker det! Her er den meget simple løsning. Du behøver kun dette lille script:

<script>
function kollapsLuk() {
for (nr = 0; nr < 4; nr++) {
if (nr == 3) {
nr = 4
}
if (collapse.blocks[nr].open == true) {
collapse.close(nr);
break;
}
}
}
</script>

Og det eneste du skal gøre med linksene er, at de links, der skal lukke de andre menupunkter, skal se sådan her ud:
<a href=\"et-eller-andet.html\" onClick=\"luk()\">Luk</a>

Færdig!!! :-)
Avatar billede whatever Nybegynder
17. september 2001 - 17:33 #38
Det er også lettere at tilføje flere menupunkter med denne løsning.
Avatar billede Slettet bruger
17. september 2001 - 17:34 #39
Ups, funktionsnavnet skal bare være luk()
Avatar billede Slettet bruger
17. september 2001 - 17:36 #40
Crap, du var først med det sidste, whatever!
**Sukker, men jeg ser de 400 points flyve væk fra mine hænder...** :-(
Avatar billede gerri Nybegynder
17. september 2001 - 17:36 #41
Ok...det prøver jeg lige at indsætte!!

Jeg vender straks tilbage!
Avatar billede whatever Nybegynder
17. september 2001 - 17:36 #42
Vi burde dele, du har også gjort en stor indsats. Hvis ikke større.
Avatar billede Slettet bruger
17. september 2001 - 17:44 #43
Denne funktion gør det endnu nemmere at lave nye menupunkter:

function luk() {
langde = collapse.numBlocks;
for (i = 0; i < langde; i++) {
collapse.close(i);
}
}

Nu skal man nemlig slet ikke ændre i scriptet, når man ændrer på antallet af elementer!
Avatar billede gerri Nybegynder
17. september 2001 - 17:56 #44
Mange tak for hjælpen - nu virker den præcis som den skal!!

Ret skal være ret, så jeg har afsat 200 point ekstra, så i hver får 300 point.
I har jo begge gjort en stor indsats!!!

Igen...MANGE TAK :o)
Avatar billede whatever Nybegynder
17. september 2001 - 17:56 #45
Det var jo næsten frås ;-) Mange tak.
Avatar billede Slettet bruger
17. september 2001 - 17:57 #46
Og selv mange tak for points! @8-))
Avatar billede gerri Nybegynder
17. september 2001 - 17:59 #47
Glæder mig I er tilfredse :o)

Jeg havde jo aldrig selv fundet ud af det, så det var alle pointene værd!!
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