login  Naam:   Wachtwoord: 
Registreer je!
 Forum

uitklapmenu

Offline Stefan14 - 07/03/2007 22:49
Avatar van Stefan14PHP gevorderde Ik probeer een menu uit te maken dat een aantal subopties laat zien wanneer je erop klikt.

Ik heb het volgende javascriptje
  1. <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
  2. function menu(id){
  3.  
  4. // haal het object op
  5. var getObj = document.getElementById(id);
  6.  
  7. // kijk of de style.display gelijk is aan none of block
  8. // als hij gelijk is aan none
  9. if(getObj.style.display == 'none'){
  10.  
  11. // laat het submenu zien (roep de functie aan)
  12. show(id);
  13. }
  14.  
  15. // als hij gelijk is aan block
  16. else if(getObj.style.display == 'block'){
  17.  
  18. // verberg het submenu (roep de functie aan)
  19. hide(id);
  20. }
  21. }
  22.  
  23. // een functie om het submenu te laten zien
  24. function show(id){
  25.  
  26. // haal het object op
  27. var getObj = document.getElementById(id);
  28.  
  29. // laat het object zien
  30. getObj.style.display = 'block';
  31. }
  32.  
  33. // een functie om het submenu te verbergen
  34. function hide(id){
  35.  
  36. // haal het object op
  37. var getObj = document.getElementById(id);
  38.  
  39. // verberg het object
  40. getObj.style.display = 'none';
  41. }
  42. </SCRIPT>


en deze wordt zo toegepast
  1. <?php
  2. echo "<tr><td></td><td height=\"20\"><a href=\"javascript:menu('ding');\" title=\"docent aanmelden\"><br />muziekdocent aanmelden</a></td></tr>";
  3. ?>
  4. <div id="ding" style="display: none;">
  5. <tr><td></td><td height=\"20\"><a href="doc_new.php" target="rechts" title="docent aanmelden">gratis lidmaatschap</a></td></tr><br>
  6. <tr><td></td><td height=\"20\"><a href="doc_bud.php" target="rechts" title="docent aanmelden">budget lidmaatschap</a></td></tr><br>
  7. <tr><td></td><td height=\"20\"><a href="doc_vol1.php" target="rechts" title="docent aanmelden">volledig lidmaatschap</a></td></tr><br>
  8. </div>

let niet op de escape slashes e.d., want ik heb het helaas niet gescript, ik moet het alleen aanpassen.

Het probleem is alleen dat de subopties al weergegeven zijn wanneer de pagina geladen wordt en deze zijn ook niet in en uit te klappen door er op te klikken.

32 antwoorden

Gesponsorde links
Offline Mad_Mike - 08/03/2007 09:03
Avatar van Mad_Mike PHP beginner Ik heb het hier bij mij gewoon werkend hoor. Zowel in IE6.0 als FireFox2.0
Offline Stefan14 - 08/03/2007 13:27
Avatar van Stefan14 PHP gevorderde ja kijk dat is nou het stomme.

dit is dus voor een klant.
En bij mij werkt het localhost niet, niet als ik het upload (ok zou niet uit moeten maken, maar toch).
En als ik het aan de klant doorstuur werkt het bij hem ook niet.

Ik heb dit script op phphulp gehad van YPM, en bij hem werkte het wel.
Offline Mad_Mike - 08/03/2007 13:38
Avatar van Mad_Mike PHP beginner plaats eens hier en daar een alert('test1'); alert('test2'); etc tussen de code in de functies. Kan je kijken waar hij wel en waar hij niet komt.

Ik zou het even niet zosnel weten
Offline Stefan14 - 14/03/2007 23:43 (laatste wijziging 15/03/2007 16:04)
Avatar van Stefan14 PHP gevorderde Ik heb vanalles geprobeerd, maar krijg het gewoon niet werkend, zal wel een of ander stom foutje zijn. Maar ik ben totaal niet thuis in Javascript.
Iemand die de fout ziet, of eventueel zelfs een ander scriptje wil schrijven dat zeker weten wel zal werken.


Offline Godlord - 15/03/2007 16:09 (laatste wijziging 15/03/2007 16:11)
Avatar van Godlord PHP gevorderde Misschien display vervangen door visibility en dan visible en hidden gebruiken.

Edit: dit is zo'n uitklapgeval.
http://www.site...mp;id=1099
Offline Stefan14 - 15/03/2007 16:34 (laatste wijziging 15/03/2007 16:36)
Avatar van Stefan14 PHP gevorderde @Godlord, bedankt, ik heb het geprobeerd, en vol goede hoop refreshte ik de pagina, maar helaas hetzelfde resultaat.

code is nu als volgt:
  1. <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
  2. // een functie om te kijken of het menu uitgeklapt is of niet
  3. function menu(id){
  4.  
  5. // haal het object op
  6. var getObj = document.getElementById(id);
  7.  
  8. // kijk of de style.display gelijk is aan none of block
  9. // als hij gelijk is aan none
  10. if(getObj.style.visibility == 'visible'){
  11.  
  12. // laat het submenu zien (roep de functie aan)
  13. show(id);
  14. }
  15.  
  16. // als hij gelijk is aan block
  17. else if(getObj.style.visibility == 'hidden'){
  18.  
  19. // verberg het submenu (roep de functie aan)
  20. hide(id);
  21. }
  22. }
  23.  
  24. // een functie om het submenu te laten zien
  25. function show(id){
  26.  
  27. // haal het object op
  28. var getObj = document.getElementById(id);
  29.  
  30. // laat het object zien
  31. getObj.style.visibility = 'visible';
  32. }
  33.  
  34. // een functie om het submenu te verbergen
  35. function hide(id){
  36.  
  37. // haal het object op
  38. var getObj = document.getElementById(id);
  39.  
  40. // verberg het object
  41. getObj.style.visibility = 'hidden';
  42. }
  43. </SCRIPT>


  1. <?php
  2. echo "<tr><td></td><td height=\"20\"><a href=\"javascript:menu('ding');\" title=\"docent aanmelden\"><br />muziekdocent aanmelden</a></td></tr>";
  3. ?>
  4. <div id="ding" style="visibility: hidden;">
  5. <tr><td></td><td height=\"20\"><a href="doc_new.php" target="rechts" title="docent aanmelden">gratis lidmaatschap</a></td></tr><br>
  6. <tr><td></td><td height=\"20\"><a href="doc_bud.php" target="rechts" title="docent aanmelden">budget lidmaatschap</a></td></tr><br>
  7. <tr><td></td><td height=\"20\"><a href="doc_vol1.php" target="rechts" title="docent aanmelden">volledig lidmaatschap</a></td></tr><br>
  8. </div>


Alle hulp is welkom, want ik moet het eigenlijk vanavond af hebben. 
Offline javascript - 15/03/2007 16:40 (laatste wijziging 15/03/2007 16:44)
Avatar van javascript Nieuw lid Wijzig niets aan het script.
Met deze test zie je dat het werkt:

<a href="javascript:menu('ding');">muziekdocent aanmelden</a>
<div id="ding" style="display:none">
<a href="#">gratis lidmaatschap</a><br>
<a href="#">budget lidmaatschap</a><br>
<a href="#">volledig lidmaatschap</a><br>
</div>

http://users.skynet.be/javascript
Offline Stefan14 - 15/03/2007 16:44
Avatar van Stefan14 PHP gevorderde hier even het volledige script, misschien dat dat meer opheldering biedt, want bij mij werkt het totaal niet. Niet in IE, niet in FF, niet in Opera.

http://www.plaatscode.be/4631/

overigens alleen opmerkingen over het uitklapmenu, niet over de rest van het script, want dat heb ik namelijk niet gemaakt.
Offline Rik - 15/03/2007 16:45 (laatste wijziging 15/03/2007 16:47)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik snap niet waarom hij het bij jou niet doet.

Bij Mad_Mike doet hij het en hier doet hij het ook nog in IE7. Weet je zeker dat javascript wel aan staat? Wat voor browser gebruik je?

Edit:
Heb je een voorbeeld online staan?
Offline Stefan14 - 15/03/2007 16:48 (laatste wijziging 15/03/2007 16:50)
Avatar van Stefan14 PHP gevorderde bij mij doet hij het niet, en bij de klant ook niet.

Ik gebruik IE6, FF2 en Opera9.01
Javascript staat volgens mij wel aan aangezien het op andere sites wel goed gaat met javascripts.

zojuist geupload, voorbeeld online: http://www.elektronica-onderdelen.nl/muziekles
Offline Godlord - 15/03/2007 16:51
Avatar van Godlord PHP gevorderde Heb je de toestemming van de host van de server waarop je script zit om JavaScript te gebruiken?
Offline Stefan14 - 15/03/2007 16:54
Avatar van Stefan14 PHP gevorderde ik ontwikkel het localhost op WAMP, daar deed hij het niet, maar op mijn website en op die van de klant werkt het ook niet.

Doet hij op mijn website bij jullie ook niet?
Ik zal zo eens even bellen naar mijn host om te vragen.
Offline Rik - 15/03/2007 16:58
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Hij doet het op jouw host niet, en als ik dat bestand lokaal opsla doet hij het ook niet. :S

Alles wordt goed aangeroepen maar toch doet hij het niet...
Offline Godlord - 15/03/2007 17:01
Avatar van Godlord PHP gevorderde Vreemd, ik zie hier echt geen fout in .
Offline javascript - 15/03/2007 17:03
Avatar van javascript Nieuw lid De fout zit in het gebruik van jouw escape-tekens:

Dit is OK: <a href="javascript:menu('ding');" title="docent aanmelden">muziekdocent aanmelden</a>

Dit niet: <a href=\"javascript:menu('ding');\" title=\"docent aanmelden\"><br />muziekdocent aanmelden</a>

http://users.skynet.be/javascript
Offline Stefan14 - 15/03/2007 17:04
Avatar van Stefan14 PHP gevorderde Ik denk dat een ander deel van het totale script (zie vorige pagina) roet in het eten gooit, maar hoe of wat weet ik niet.
Offline Godlord - 15/03/2007 17:06
Avatar van Godlord PHP gevorderde @javascript: het gebruik van de escape-tekens is goed.
Offline javascript - 15/03/2007 17:10
Avatar van javascript Nieuw lid Doe de test.

http://users.skynet.be/javascript
Offline Rik - 15/03/2007 17:11 (laatste wijziging 15/03/2007 17:13)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je javascript kan in ieder geval een heel stuk korten:
  1. function menu(id)
  2. {
  3. document.getElementById(id).style.display = document.getElementById(id).style.display == 'none' ? 'block' : 'none';
  4. }


Maar dan doet hij nog niets... Volgens mij komt dat omdat je probeert een paar cellen van de tabel uit te schakelen terwijl dat niet mag. Misschien deed hij het wel in het stukje code dat je eerst gaf omdat er toen nog niets om die div heen stond.

Edit:
@javascript
Dat ze namen als javascript toelaten, net alsof je 'javascript' zelf zou zijn. 

@Stefan
Probeer eens me ul en li te werken, dat maakt je code een stuk overzichtelijker en dan had je waarschijnlijk dit probleem niet gehad. 
Offline javascript - 15/03/2007 17:19 (laatste wijziging 15/03/2007 18:28)
Avatar van javascript Nieuw lid Wat een onzin hier allemaal verkocht wordt.

Doe gewoon de test:

<html>
<head>
<script type="text/javascript">
function menu(id){
var getObj = document.getElementById(id);
if(getObj.style.display == 'none'){show(id);}
else if(getObj.style.display == 'block'){hide(id);}}
function show(id){
var getObj = document.getElementById(id);
getObj.style.display = 'block';}
function hide(id){
var getObj = document.getElementById(id);
getObj.style.display = 'none';}
</SCRIPT>
</head>
<body>
<a href="javascript:menu('ding');">muziekdocent aanmelden</a>
<div id="ding" style="display:none">
<a href="#">gratis lidmaatschap</a><br>
<a href="#">budget lidmaatschap</a><br>
<a href="#">volledig lidmaatschap</a><br>
</div>
</body>
</html>

Dit werkt.
Plaats de regel met de escape-tekens en het werkt vanzelfsprekend niet meer: dit is gewoon basiskennis.

@non-believers: geef 'javascripts' in in Google en je merkt meteen wie wereldwijd op nummer 1 staat wanneer het om JavaScript gaat.

http://users.skynet.be/javascript
Offline Rik - 15/03/2007 17:26
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik snap ook dat dat werkt, maar het gaat erom dat het bij de topicstarter werkt. En volgens mij komt dat doordat er een tabel om heen staat.
Offline Stefan14 - 15/03/2007 19:05 (laatste wijziging 15/03/2007 19:05)
Avatar van Stefan14 PHP gevorderde goed, ik heb nu het spul omgezet naar <ul> en <li>, maar ten eerste ziet het er nu totaal niet uit.
Daarnaast werkt het nog steeds niet.

code: http://plaatscode.be/4632/

voorbeeld: http://www.elektronica-onderdelen.nl/muziekles
Offline Rik - 15/03/2007 19:39
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik ben er ff doorheen gegaan en heb hem een stuk overzichtelijker gemaakt. Maar het mooiste is dat hij nu ook werkt! 

Code:
http://plaatscode.be/4634/
Offline Stefan14 - 15/03/2007 20:00
Avatar van Stefan14 PHP gevorderde @Boukefalos, hij werkt inderdaad!

Hij is nu ook een stuk overzichtelijker inderdaad, maar als ik dat bij alle scripts zou moeten gaan doen kan ik daar wel een dagje voor uit trekken gezien het aantal scripts. 

Ik ben je zeer, zeer dankbaar!

Ik heb voor dit probleem echt uren lopen zoeken met google en maar proberen. Ik loop er nu al zo'n 3 weken mee te 'klooien'. Eindelijk is het nu gelukt!
Offline Rik - 15/03/2007 20:05
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je moet hem wel nog in je php code zetten, maar dat gaat vast wel lukken. 

Ik zal eens kijken of er ergens een goede "code cleaner" oid is, of er anders eentje proberen zelf te maken. Dat zal inderdaad een boel werk schelen.
Offline Stefan14 - 15/03/2007 20:24 (laatste wijziging 16/03/2007 20:52)
Avatar van Stefan14 PHP gevorderde Dat is inderdaad gelukt en hij is al in gebruik, heb alleen nog een klein schoonheidsfoutje, hoe krijg ik die ruitjes weg? met type="" kun je bepalen wat voor opsommingsteken er moet staan, maar hoe zorg je ervoor dat er simpelweg niets staat?

niemand?
Offline Ultimatum - 16/03/2007 21:12
Avatar van Ultimatum PHP expert style-type: none;
Offline Stefan14 - 16/03/2007 21:22
Avatar van Stefan14 PHP gevorderde klinkt vrij logisch, maar helaas is dat niet de oplossing, tenminste, ik pas hem zo toe
  1. <li style-type: none;>
Offline Ultimatum - 16/03/2007 21:24
Avatar van Ultimatum PHP expert <li style="list-style-type: none">

Sorry, ik had het verkeerd getypt, maar je moet het zowiezo in css zetten. dus style="";
Offline Stefan14 - 16/03/2007 21:29
Avatar van Stefan14 PHP gevorderde @Ultimatum, aan de hand van jouw eerste post ben ik even gaan zoeken op google, en toen kwam ik het volgende tegen:

css
  1. #navigatie li
  2. {
  3. /* geen opsommingsteken */
  4. list-style-type: none;
  5. width: 160px;
  6. }


toepassing
  1. <ul id="navigatie">


werkt op jouw manier hoogstwaarschijnlijk ook aangezien dat bijna hetzelfde is.
Toch bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.27s