Vraag & Antwoord

Webdesign (HTML, CSS, Flash)

[CSS/HTML] Probleem menu op de site

24 antwoorden
  • Ik heb een hoofdmenu op mijn site gezet, waarbij je als je met de muis over 1 v.d. links gaat, er automatisch een keuzemenu verschijnt met een aantal opties. De site telt een heel aantal pages en op elke page heb ik dus het betreffende hoofdmenu staan. Nu is het probleem dat als ik iets wil veranderen aan het hoofdmenu, ik het op elke pagina moet veranderen en dat is bijna niet te doen. Ik heb van alles geprobeerd om het hoofdmenu in een bestand te zetten en dan elke page ernaar te verwijzen, maar dat is niet gelukt. Hier volgende de codes die ik heb gebruikt. Op elke page verwijs ik wel naar een CSS-bestand waarin de vormgeving van het menu is weergegeven. Dat is de volgende verwijzing in de head: [code:1:9a90b35573]<link rel=stylesheet type="text/css" href="menu.css">[/code:1:9a90b35573] De inhoud van menu.css is: [code:1:9a90b35573]<style> <!-- .menuskin{ position:absolute; width:209px; background-color:48A3F3; border:2px solid black; font:normal 12px Tahoma; font-weight:bold; line-height:18px; z-index:100; visibility:hidden; } .menuskin a{ text-decoration:none; color:F8BB7E; padding-left:10px; padding-right:10px; } #mouseoverstyle{ background-color:48A3F3; } #mouseoverstyle a{ color:black; } --> </style>[/code:1:9a90b35573] Verder heb ik in elke body het volgende staan: [code:1:9a90b35573]<script language="JavaScript1.2" src="menu.js"> </script> <div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)"> </div>[/code:1:9a90b35573] In menu.js staat o.a. de inhoud van de keuzemenu's, waarbij ik nu 1 keuzemenu weergeef: [code:1:9a90b35573]linkset[5]='<div class="menuitems"><a href="symbolen.htm">Joodse Symbolen</a></div>' linkset[5]+='<div class="menuitems"><a href="feesten.htm">Joodse Feesten</a></div>'[/code:1:9a90b35573] Tenslotte staan er op elke page alle links van het hoofdmenu, waarbij ik er weer 1 van weergeef: [code:1:9a90b35573]<tr> <td><font size="-1"><b><a href="#" onMouseover="showmenu(event,linkset[5])" onMouseout="delayhidemenu()">Cultuur</a></b></font></td> </tr> [/code:1:9a90b35573] Wie kan mij raad geven hoe ik het voor elkaar kan krijgen om bij een wijziging niet steeds alles pages moet gaan aanpassen? Voor de duidelijkheid: geen scriptrequests, maar tips... O ja, ik heb dus elke link van het hoofdmenu in een tabel staan, misschien dat dat een probleem op kan leveren?
  • Klinkt lullig, maar dat lukt zo niet. Je moet dan gebruik gaan maken van PHP/ASP of frames.
  • OK, duidelijk... Met ASP/PHP kan ik niet overweg en om nu alles om te gaan gooien naar frames is ook zo wat. Het heeft me namelijk aardig wat moeite gekost om de achtergrond van de site netjes te verdelen over tabellen. Daarbij komt ook nog dat je dan weer met het probleem zit dat de keuzemenu's die verschijnen, in een ander frame weergegeven moeten worden, anders vallen ze weg. Dus daar begin ik niet aan. Maar bedankt voor je antwoord... Ik weet waar ik nu aan toe ben...
  • Ik zou ook frames gebruiken want iedere keer het menu laden gaat nogal ten koste van de snelheid. Als je dat toch niet wilt is misschien een tip om een replace-functie te gebruiken die in (goede) HTML editors zitten. Bijv.: Homesite, dus Dreamweaver ook, heeft een functie "extended replace" waarmee je in een keer een stukje code van alle pagina's kan vervangen door een ander stukje code. Succes, Henkz
  • Met de snelheid zit het wel goed, maar die tip klinkt wel aardig. Ik ga het wel ff proberen met Dreamweaver. Bedankt!!!
  • Ook [url=http://www.araneae.com]Araneae[/url] heeft een zoek&vervang functie die werkt over alle geopende documenten.
  • [quote:7fc0799b05="Phrea"]Klinkt lullig, maar dat lukt zo niet. Je moet dan gebruik gaan maken van PHP/ASP of frames.[/quote:7fc0799b05] Toch nog ff over jouw antwoord, Phrea: Kun je misschien ook aangeven waarom dat niet gaat lukken? Kijk, ik had namelijk eerst ook de inhoud van menu.js op elke page staan. Dat heb ik inmiddels kunnen veranderen door het in een apart bestand (menu.js) te plaatsen en dan op elke page alleen maar te verwijzen naar menu.js. Waarom kan het op die manier niet dan? Dus ook de rest van de code van het menu dat op elke page staat in 1 bestand plaatsen? Of kan het niet omdat ik alle links van het menu in een tabel heb gezet?
  • ik snap het niet helemaal.. je hebt een .js bestand. Dat include je in elke pagina... waarom zet je dan niet alles in dat js bestand???
  • Dat is nou net het probleem! Ik snap het ook niet! Ik heb dat nl. ook geprobeerd, maar dat gaat dus niet! Maar ik hoop dus dat Phrea duidelijk kan maken waarom dat niet lukt. Ben ik eigenlijk wel heel benieuwd naar....
  • Ik weet dat er met php een mogelijkheid is om een bestand aan te maken waarin een stuk kode staat, zoals bijvoorbeeld je menu. en dat kan je in elke pagina aanroepen met een include opdracht. Maar daarvoor moet je server wel php ondersteunen. Als je wilt zoek ik het wel effe op, ik heb de boek hier nu niet bij mij liggen maar morgen zal het wel lukken.
  • Dat was dus al (een paar keer) opgemerkt.. Met .js files moet het prima gaan, het is absoluut niet nodig om dit met php een ander serverside tool te doen. Alleen ben je dan wel afhankelijk van javascript. Wat ging er verkeerd bij het includen van dat .js bestand? Bedenk wel dat het gewoon een groot script is en dat alle html-output in een document.write() o.i.d. moet komen te staan..
  • Hmmm... Is dat een nieuwe functie oid? Kan je er wat meer over vertellen?
  • nieuw? niet bepaald... Het is hetzelfde als een script in een pagina, alleen dan in een bestand, zodat je functies met verschillende pagina's kan delen. Zelfde als met css dus alleen dan met j(ava)script. Sterker nog, je kan ook css-bestanden uitschrijven met javascript. zodat ze dynamisch worden
  • Hmmm... Ik heb het weleens geprobeerd, maar dat liep eik altijd uit op een teleurstelling... :oops: Ik ga er maar weereens aan de gang dan! :)
  • Voordeel van php is natuurlijk wel dat het serverside is, en je niet afhankelijk bent van het feit of de bezoeker al dan niet javascript aan heeft staan... René.
  • Het PHP/ASP-verhaal gaat iig niet door, aangezien de server waar de site op staat het simpelweg niet ondersteunt. Ik had het ook liever anders gezien, maar ja.... Ik ben nog geen eigen baas hier... :lol: Het liefst zou ik idd de oplossing zien te vinden in JS, dus door alles in 1 bestand te zetten en dan een verwijzing naar dat bestand op elke page. Maar nogmaals, dat lukt dus niet. Ik heb nu dus al 1 JS-bestand, zoals hierboven aangegeven. Als ik de rest van de code van het hoofdmenu, die ik nu nog in de body van elke page heb staan, er gewoon onder plak, wordt het menu niet weergegeven... Wat doe ik fout? Jurriaan had het over document.write()?
  • hoe zou je het doen als je op al die pagina's javascript zou gebruiken om het menu te maken? dan zet je op elke pagina een stuk javascript. Javascript is geen html, dus om html weer te geven, zul je een commando moeten gebruiken. in dit geval is dat dus document.write om iets direct naar (het te maken) html document te schrijven. als je dus dit doet: <table><tr><td> <script> document.write('<b>menu</b>'); document.write('<li>1e menuoptie'); document.write('<li>2e menuoptie'); document.write('<li>3e menuoptie'); </script> </td></tr></table> dan leest de browser het volgende: <table><tr><td> <b>menu</b> <li>1e menuoptie <li>2e menuoptie <li>3e menuoptie </td></tr></table> en rendert dat vervolgens. Het enige verschil hiermee is dat je dat stukje javascript in een apart bestand zet (zonder scripttags, het is tenslotte geen html).
  • Jurriaan, bedankt voor tip! Alleen wil het niet lukken. Het menu verschijnt echt niet. Ik heb nu de volgende code in menu2.js geplaatst:[code:1:cba06a44fc]<table><tr><td> <script> document.write('<li><b><a href="#" onMouseover="showmenu(event,linkset[2])" onMouseout="delayhidemenu()">Home</a></b>'); document.write('<li><b><a href="#" onMouseover="showmenu(event,linkset[2])" onMouseout="delayhidemenu()">Opties</a></b>'); </script> </td></tr></table>[/code:1:cba06a44fc] Op elke page moet dus i.p.v. bovenstaande code een verwijzing komen te staan naar menu2.js. Dat heb ik dus zo gedaan:[code:1:cba06a44fc]<script language="JavaScript1.2" src="menu2.js">[/code:1:cba06a44fc] Maar het mag nog niet baten....
  • Je moet ook alleen document.write's in dat bestand zetten en niet <table> etc. En al helemaal geen <script>, want het is al een script ;)
  • OK, maar nu heb ik het dus zo gedaan:[code:1:d4ff7b6558]document.write('<li><b><a href="#" onMouseover="showmenu(event,linkset[2])" onMouseout="delayhidemenu()">Home</a></b>'); document.write('<li><b><a href="#" onMouseover="showmenu(event,linkset[2])" onMouseout="delayhidemenu()">Opties</a></b>');[/code:1:d4ff7b6558] ... maar ik zie geen verschil. Oftewel, het menu verschijnt niet...

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.