Javascript menu werkt niet goed

Status
Niet open voor verdere reacties.

LiveNL

Gebruiker
Lid geworden
12 okt 2009
Berichten
20
Ik heb met behulp van een klein javascriptje (van internet) een menutje in elkaar gezet. deze werkt echter niet helemaal zoals ik had gewilt. De functie van het javascript is dat het zorgt dat het uitvouwt. Maar als ik op de pagina kom is deze al uitgevouwd.

dit is de code die tussen mijn head tags staat:

Code:
<script type="text/javascript" src="Menu.js"></script>

dit staat tussen mijn body tags op de plaats waar ik mijn menu wil hebben:
Code:
	<a href="#" onclick="extend()"><img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/></a>
				<div id="schaapje" name="schaapje" class="schaapje"> 
				<a href="wolfenstein.html"><img src="wolfensteinsubbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a> <br/> 
				<a href="newkids.html"><img src="newkidssubbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a> <br/>
				<div>

en dit is het javascript bestand (menu.js) deze staat in dezelfde map als die html pagina waarin het menu moett komen.

Code:
<!-- 
#schaapje {visibility: hidden;} 
//--> 
</style> 
<script language="javascript"> 
<!-- 
var mydownloadsboolean = false; 
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje'); 
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean =false; 
      mydownloads.style.visibility ="hidden"; 
   } 
   else 
   { 
      mydownloadsboolean =true; 
      mydownloads.style.visibility ="visible"; 
   } 
} 
//-->

ik snap niet waarom hij niet goed werkt.. hopelijk kan iemand me helpen.

alvast bedankt

ps de vereenvoudigde versie werkt wel:
Code:
<html> 
<head> 
<style> 
<!-- 
#schaapje {visibility: hidden;} 
//--> 
</style> 
<script language="javascript"> 
<!-- 
var mydownloadsboolean = false; 
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje'); 
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean =false; 
      mydownloads.style.visibility ="hidden"; 
   } 
   else 
   { 
      mydownloadsboolean =true; 
      mydownloads.style.visibility ="visible"; 
   } 
} 
//--> 
</script> 
</head> 
<body> 
<a href="#" onclick="extend()"><img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/></a>
<div id="schaapje" name="schaapje" class="schaapje"> <br/>
<a href="wolfenstein.html"><img src="wolfensteinsubbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a> <br/> 
<a href="newkids.html"><img src="newkidssubbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a> <br/>
<div> 
</body> 
</html>
 
Laatst bewerkt:
Haal her rode eens uit je menu.js

<!--
#schaapje {visibility: hidden;}
//-->
</style>
<script language="javascript">

<!--
var mydownloadsboolean = false;
function extend()
{
var mydownloads = document.getElementById('schaapje');
if(mydownloadsboolean == true)
{
mydownloadsboolean =false;
mydownloads.style.visibility ="hidden";
}
else
{
mydownloadsboolean =true;
mydownloads.style.visibility ="visible";
}
}
//-->


en dit moet natuurlijk in de style blijven:
<!--
#schaapje {visibility: hidden;}
//-->
</style>


:cool:
 
na wat proberen klapt het menu uit. ik heb alleen nu niet een link naar menu.js gebruikt maar gewoon de code daarvan in de head gezet.

dus dit staat tussen de head tags:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"  lang="en">
	
	<head>
		<meta http-equiv="Content-Type" content="text/html;  charset=iso-8859-1" />
		<link href="stijl1.css" rel="stylesheet" type="text/css" />
		<title> PO Website - Home </title>
		<link rel="shortcut icon" href="icon.gif"/>
<style> 
<!-- 
#schaapje {visibility: hidden;} 
//--> 
</style> 
<script language="javascript"> 
<!-- 
var mydownloadsboolean = false; 
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje'); 
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean =false; 
      mydownloads.style.visibility ="hidden"; 
   } 
   else 
   { 
      mydownloadsboolean =true; 
      mydownloads.style.visibility ="visible"; 
   } 
} 
//--> 
</script> 
	
	</head>

en dit tussen de body tags:

Code:
<body bgcolor="#27408B">
	
	<table bgcolor="000000" border="2" width="100%" cellspacing="20" cellpadding="5" >
	<tr>
	<td rowspan="2" width="10%" height="30%" valign="top">
			<p>		
		<b>
		<a href="index.html"><img src="homebutton.jpg" width="140" height="35" alt="Home-button" border="0"/></a>
		<br/>
		<a href="interview.html"><img src="interviewbutton.jpg" width="140" height="35" alt="Interview-button" border="0"/></a>
		<br/> 
		
				<a href="#" onclick="extend()"><img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/></a>
				<div id="schaapje" name="schaapje" class="schaapje"> 
				<a href="wolfenstein.html"><img src="wolfensteinsubbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a> <br/> 
				<a href="newkids.html"><img src="newkidssubbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a> <br/>
				<div>	
				
		<a href="wolfenstein.html"><img src="wolfensteinbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a>
		<br/>
		<a href="overdesite.html"><img src="overdesitebutton.jpg" width="140" height="35" alt="Over de site-button" border="0"/></a>
		<br/>
		<a href="newkids.html"><img src="newkidsbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a>
		<br/>
		<img src="jw.jpg" height="140" width="140" alt="JW logo"/>
		</b>
	</p>
	</td>

	<td colspan="2"  width="50%" valign="top" align="center"> 
		<img src="banner.jpg"  height="200" width="750" alt="PO Website van Jordi"/>
	</td>
	</tr>
	<tr>
	<td>
		<p>
		Op deze site vind je info over mijn intresses, over deze site <br/>
		en het interview dat gemaakt is aan het begin van het lesjaar bij informatica.
		<br/><br/>
		</p>
		<hr size="1" align="center" width="85%" />
		<p>
		Benieuwd bij wel spel deze screenshots horen? Of wil je er gewoon graag meer over lezen? Onder het kopje Wolfenstein kun je meer info vinden.Z
		</p>
			<div align="center">
				<script type="text/javascript" src="javascript.js"></script>
			</div>
		<br/>
		<hr size="1" align="center" width="85%"/>
		<p>
		Momenteel is deze site nog volledig onder constructie, wil je weten hoe het is gegaan of de niewste updates in 1 oogopslag weten te vinden?
		Ga dan naar info en updates. Je kan hier het snelst komen door op de pijl onder dit tekstje te klikken. <br/>
		<a href="infoenupdates.html"><img src="pijl.jpg" width="40" height="40" alt="Pijl" border="0"/></a>
		</p>
	</td>
	</tr>
	</table>
	
</body>
</html>

heb voor de volledigheid maar even alles gekopieerd.
hiermee ben ik helaas nog niet klaar. op zich klapt het menu ne wel goed uit. maar alles wat daaronder staat is ook "hidden". dus ook de knoppen die niet uit horen te klappen maar gewoon standaard op hun plek moeten staan. de enige knoppen die uit meoten klappen zijn: wolfensteinsubbutton.jpg & newkidssubbutton.jpg.

en dan zou ik dat de code vn het javascript dat tussen de head tags staat ook nog graag als link zien naar een los javascript bestand.

hopelijk kan iemand me helpen
 
Pagina:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"  lang="en">
	
	<head>
		<meta http-equiv="Content-Type" content="text/html;  charset=iso-8859-1" />
		<link href="stijl1.css" rel="stylesheet" type="text/css" />
		<title> PO Website - Home </title>
		<link rel="shortcut icon" href="icon.gif"/>
<style type="text/css"> 
<!-- 
#schaapje {visibility: hidden;} 
//--> 
</style> 

<script type="text/javascript" src="menu-klik.js"></script>

	
	</head>
<body bgcolor="#27408B">
	
	<table bgcolor="000000" border="2" width="100%" cellspacing="20" cellpadding="5" >
	<tr>
	<td rowspan="2" width="10%" height="30%" valign="top">
		
		<a href="index.html"><img src="homebutton.jpg" width="140" height="35" alt="Home-button" border="0"/></a>
		<br/>
		<a href="interview.html"><img src="interviewbutton.jpg" width="140" height="35" alt="Interview-button" border="0"/></a>
		<br/> 
		
				<a href="#" onclick="extend()">
<img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/></a>
				<div id="schaapje"  class="schaapje"> 
				<a href="wolfenstein.html"><img src="wolfensteinsubbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a> <br/> 
				<a href="newkids.html"><img src="newkidssubbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a> <br/>
				</div>	
				
		<a href="wolfenstein.html"><img src="wolfensteinbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a>
		<br/>
		<a href="overdesite.html"><img src="overdesitebutton.jpg" width="140" height="35" alt="Over de site-button" border="0"/></a>
		<br/>
		<a href="newkids.html"><img src="newkidsbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a>
		<br/>
		<img src="jw.jpg" height="140" width="140" alt="JW logo"/>
	
	</td>

	<td colspan="2"  width="50%" valign="top" align="center"> 
		<img src="banner.jpg"  height="200" width="750" alt="PO Website van Jordi"/>
	</td>
	</tr>
	<tr>
	<td>
		<p>
		Op deze site vind je info over mijn intresses, over deze site <br/>
		en het interview dat gemaakt is aan het begin van het lesjaar bij informatica.
		<br/><br/>
		</p>
		<hr size="1" align="center" width="85%" />
		<p>
		Benieuwd bij wel spel deze screenshots horen? Of wil je er gewoon graag meer over lezen? Onder het kopje Wolfenstein kun je meer info vinden.Z
		</p>
			<div align="center">
				<script type="text/javascript" src="javascript.js"></script>
			</div>
		<br/>
		<hr size="1" align="center" width="85%"/>
		<p>
		Momenteel is deze site nog volledig onder constructie, wil je weten hoe het is gegaan of de niewste updates in 1 oogopslag weten te vinden?
		Ga dan naar info en updates. Je kan hier het snelst komen door op de pijl onder dit tekstje te klikken. <br/>
		<a href="infoenupdates.html"><img src="pijl.jpg" width="40" height="40" alt="Pijl" border="0"/></a>
		</p>
	</td>
	</tr>
	</table>
	
</body>
</html>

js
menu-klik.js

Code:
<!-- 
var mydownloadsboolean = false; 
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje'); 
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean =false; 
      mydownloads.style.visibility ="hidden"; 
   } 
   else 
   { 
      mydownloadsboolean =true; 
      mydownloads.style.visibility ="visible"; 
   } 
} 
//-->

:cool:
 
[smallIMG]http://i37.tinypic.com/2cekxgm.jpg[/smallIMG]

krijg dit?

wat is er nog fout..
Mod: Graag de volgende keer de smallimg-tag gebruiken voor je afbeelding :)
 
Laatst bewerkt door een moderator:
Als je op het uitroepteken klikt krijg je een melding van de fout.

Haal de volgende kop en staart-tekens uit de js file

<!--

//-->

:cool:
 
[smallIMG]http://i36.tinypic.com/29xd6ko.jpg[/smallIMG]

de zeer vereenvoudige versie van het script werkt wel:
HTML:
<html> 
<head> 
<style> 
<!-- 
#schaapje {visibility: hidden;} 
//--> 
</style> 
<script language="javascript"> 
<!-- 
var mydownloadsboolean = false; 
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje'); 
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean =false; 
      mydownloads.style.visibility ="hidden"; 
   } 
   else 
   { 
      mydownloadsboolean =true; 
      mydownloads.style.visibility ="visible"; 
   } 
} 
//--> 
</script> 
</head> 
<body> 
<a href="#" onclick="extend()"><img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/></a>
<div id="schaapje" name="schaapje" class="schaapje"> <br/>
<a href="wolfenstein.html"><img src="wolfensteinsubbutton.jpg" width="140" height="35" alt="Wolfenstein-button" border="0"/></a> <br/> 
<a href="newkids.html"><img src="newkidssubbutton.jpg" width="140" height="35" alt="Newkids-button" border="0"/></a> <br/>
<div> 
</body> 
</html>

dont get it ^^ :S
Mod: Graag de volgende keer de smallimg-tag gebruiken voor je afbeelding
 
Laatst bewerkt door een moderator:
Maak er dit van:
Code:
var mydownloadsboolean = false;
function extend() 
{ 
   var mydownloads = document.getElementById('schaapje');
   if(mydownloadsboolean == true) 
   { 
      mydownloadsboolean = false; 
      mydownloads.style.visibility = "hidden"; 
   } 
   else 
   { 
      mydownloadsboolean = true; 
      mydownloads.style.visibility = "visible"; 
   } 
}

spaties geplaatst na = teken.

ik krijg nu geen foutmelding meer.

:cool:
 
De functie kan overgens nog kleiner:
[JS]var mydownloadsboolean = false;

function extend()
{
var obj = document.getElementById('schaapje').style;

obj.visibility = (obj.visibility == 'hidden') ? 'visible' : 'hidden';
mydownloadsboolean = !mydownloadsboolean;
}[/JS]het gaat er nu wel van uit dat je begint met een verborgen scherm. Zo niet, verander je boolean naar 'true'.


:thumb:
 
Hoi scripters,
Ik begrijp dat nu mydownloadsboolean mee-wisselt van false naar true en omgekeerd. Als dat klopt: wat doet die variabele verder nog in het verhaal? Ik zie 'm nergens terugkomen == kan deze intussen niet gewoon gemist worden?

CSShunter
 
CSShunter,

je hebt helemaal gelijk. Ik heb zelf ook geen enkel idee waarom je deze zou willen gebruiken, maar ik bedacht dat de TS mischien een ander script had dat met deze variabele werkte. In dat geval zou het weghalen het andere script dus verpesten.

Uiteraard kan je deze variabele weghalen, en mocht er een ander script zijn welke deze ook gebruikt, deze via het document.getElementById('schaapje').style.visibility opvragen.



:thumb:
 
Hoi Vegras,
Ja, voorzichtigheid is de vader van de porseleinkast. :)

Omdat de mydownloadsboolean in het aanvangsscript zat, heb ik es geGoogled. En ja hoor daar kwam het script al: exact idem dito: met schaapje en al (vroeg me al af waarom Jordi met z'n Wolfenstein-interesse uitgerekend de id="schaapje" gebruikte). :D

Terwijl de mydownloadsboolean in den beginne het sturingselement was (if || else), maar nogal uit de lucht kwam vallen, is het veel eleganter & praktischer direct de schaapjes-style als trigger van de flip-flop te gebruiken, zoals in jouw oplossing.
- Die zin kan wel in het gouden boek met jargon-citaten. ;)

Met vriendelijke groet,
CSShunter
 
mensen bedankt voor jullie hulp,

maar ik snap er nog niet veel van. De laatste vier reacties geven aanwijzingen op wat daarvoor staat maar ondertussen veranderen ze ook nog iets.
Zouden jullie voor mij het volledige htmlscript van de pagina willen posten. en het script dat in menu.js staat?

Mvg LiveNL of Jordi waar jullie inmiddels al achterwaren.

ps. het script komt idd van die site. Ik moet nu voor school (1e jaar informatica) een site maken in html/css en nu kwam ik dit scriptje tegen en wou het verwerken in mn menu in eerste instantie leek dit aardig. maar ik kom er niet echt goed uit. daarom echt hardstikke bedankt dat jullie hier tijd in steken :thumb:

/BIG EDIT:

HET WERKT... het werkte niet de laatste aanwijzigingen omdat

<script type="text/javascript" src="menu-klik.js"></script>

dit er in stond (wat moest van peter :mad::D :P)
maakt niet uit, bedankt dat je helpt :D

nu alleen nog; als ik op de pagina kom is de plek waar het uitklapmenu komt zwart/leeg. kan ik het zo maken dat de rest bij uitklappen naar beneden schuift inplaats van al beneden is? dat het meeschuift naar beneden. als jullie het snappen? :P

dank

terondersteuning van mijn verhaal:
zo is het nu:
dfvq81.jpg


en zo wil iik het op dat zelfde moment:
2qal9x5.jpg


dat dan vervolgens het menu uitschuift naar dit:
289lo5l.jpg


mvg Jordi.

ps. ik moet 2 keer klikken voordat het menu uitklapt. als ik de pagina opstart staat dit in de adres balk:

C:\Users\Jordi.PC_van_Jordi\Desktop\Site\index.html

als ik 1 keer klik dit:

file:///C:/Users/Jordi.PC_van_Jordi/Desktop/Site/index.html#

en bij de 2 klik klapt hij pas uit (veranderd niks aan adres balk)
 
Laatst bewerkt:
Hoi Jordi,
Eerst even uitleggen wat er precies gebeurt, dat wordt het allemaal heel logisch.
  1. Je hebt een element <div id="schaapje">...</div> op je pagina.
  2. Daarin zitten de twee uit te klappen links.
  3. Om te beginnen moet die <div> ingeklapt staan.
  4. Dat wordt met de css gedaan, die in de <head> staat.
Er wordt nu gebruik gemaakt van de css-eigenschap visibility (zichtbaarheid). Als de visibility de waarde hidden heeft, is het element ... verborgen. En als de visibility de waarde visible heeft, ja, dan is het element zichtbaar. :)
Daarbij geldt: als een element met deze eigenschap onzichtbaar gemaakt wordt, is het er wel op de pagina (d.w.z. de ruimte van het element blijft bestaan), maar de kleur van het element wordt gelijk gemaakt aan de achtergrondkleur. Dan zie je inderdaad niets.
Waarschijnlijk was het originele script bedoeld voor een horizontaal menu, dan heb je er geen last van als de ruimte onder een knop de achtergrondkleur heeft.

Gelukkig is er ook nog een andere css-eigenschap die het hele element tijdelijk uit de pagina kan halen, inclusief de ruimte van het element.
Dat is de eigenschap display ("vertonen?"). Die kan drie waardes hebben: none (niet vertonen), block (laat zien als block-element) en inline-block (laat zien als inline-block element). De laatste laten we even zitten, dat is een speciaal geval dat we hier niet nodig hebben.

Terug naar het begin. In de <head> van het document moeten dus de opdrachten komen te staan:
  • Ga over tot het aanhaken van een style.
  • De style moet uitgelezen worden als tekst, en de taal is css.
  • Pak het element met id="schaapje" (id wordt in css aangegeven met het hekje #).
  • Geef de eigenschap display de (begin-)waarde: none.
  • Nu zijn de style-voorschriften afgelopen.
In code vertaald is dat:
Code:
[font=courier]<style type="text/css"> 
   #schaapje { display: none; }
</style>[/font]
Het type="text/css" mag niet ontbreken, dat is belangrijk voor de browsers om te weten hoe ze het moeten interpreteren.

Nu gaan we naar het script voor de wisselschakelaar.
Hier moeten de opdrachten worden:
  • Maak een functie en noem die "wissel": function wissel()
    Dit was eerst extend(), maar hij moet niet alleen extenden (groter worden), maar ook weer krimpen!
  • Laat die functie het volgende doen, als hij wordt aangeroepen:
  • Bekijk in de body van het html-document het element met id="schaapje": document.getElementById('schaapje')
  • En bekijk daarvan de style-eigenschappen: document.getElementById('schaapje').style
  • Zet wat je gevonden hebt even apart in een variable obj (het object dat we gaan manipuleren), zodat we niet steeds die hele mond vol hoeven op te schrijven:
    var obj = document.getElementById('schaapje').style
  • De style-eigenschap display van onze <div> zit nu hiermee in: obj.display
  • Vraag even aan ons object (die hele mond vol dus), of de style-eigenschap display de waarde "block" heeft (of hij aan staat).
  • Als dat zo is, moet hij uitgezet worden (de waarde 'none' krijgen).
  • En anders, als dat niet zo is, moet hij aangezet worden (de waarde 'block' krijgen).
(met omdraaien van "none" en "block" kan je regelen dat er in het begin niet 2x geklikt hoeft te worden.)
Het script wordt nu al met al:
Code:
[font=courier]function wissel() 
{
   var obj = document.getElementById('schaapje').style;
 
   obj.display = (obj.display == 'block') ? 'none' : 'block';
}[/font]
Zo, tijd op > werken moet ik! :rolleyes:

Later verder: wordt vervolgd!
CSShunter
 
Terug van weggeweest! Waar waren we?
We hebben:

1. De "bij openen niet vertonen" opdracht als style-eigenschap:
Code:
[font=courier]<style type="text/css"> 
   #schaapje { display: none; }
</style>[/font]
Dit stukje code zet je in de <head> van je pagina.

2. De wissel-functie om het submenu aan en weer uit te zetten:
Code:
[font=courier]function wissel() 
{
   var obj = document.getElementById('schaapje').style;
 
   obj.display = (obj.display == 'block') ? 'none' : 'block';
}[/font]
Dit stukje code zet je niet op je pagina, maar in een apart bestandje. Waarom? Dan kan het ook makkelijk op de andere pagina's van je site gebruikt worden. Hoe?
Open je Kladblok, plak deze code er in (alleen dit, verder niets), en sla het bestandje op met de naam: menu-klik.js.
Nu de volgende stap!

3. Aanhaken van het script.
Als de pagina niet weet dat de functie ergens in een bestandje staat, kan de pagina die functie natuurlijk niet gebruiken. Daarom gaan we het bestand menu-klik.js met de functie-opdrachten aanhaken aan de pagina. Dat gaat met de volgende code (die kennen we al):
Code:
[font=courier]<script type="text/javascript" src="menu-klik.js"></script>[/font]
Dit stukje code zet je weer in de <head> van je pagina. Merk op, dat ook hier weer een type="..." wordt aangegeven, zodat de browser in dit geval weet dat het bestand als javascript gelezen moet worden.
Nu is de omschrijving van de functie binnengehaald: de functie staat klaar voor gebruik. Maar de functie is nog niet in werking gezet. Dat moet ook niet, want het wisselen moet pas bij een klik op de Interesses-button. Dat is de volgende stap.

4. In werking zetten.
Hiervoor hadden we de code ook al, alleen wordt nu als roepnaam voor de functie wissel() gebruikt in plaats van extend():
Code:
[font=courier]<a href="#" onclick="wissel()">
   <img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/>
</a>
<div id="schaapje">... enz.[/font]
Dit stukje code zet je op de bekende plaats.
Het betekent: dit is een link die naar de plaats # moet gaan, en bij klikken de wissel-functie in werking moet zetten. Het hekje # wordt gebruikt als aanduiding dat er een bladwijzer achter komt. Het is hetzelfde hekje als wat in de css voor een ID staat.
Als je na het hekje de naam van een ID op de pagina zet, scrollt de pagina automatisch omhoog (als de pagina hoog genoeg is, anders hoeft het niet) totdat het element met die ID bovenaan staat. Hier is het scrollen juist niet nodig, en met alleen het hekje gebeurt er niets (je moet op dezelfde pagina blijven, er wordt niet gescrolld).

Dat is niet helemaal waar: na een klik staat er in de adresbalk het hekje # achter de naam van de pagina.
Want klikken op de link doet nu twee dingen tegelijk: (1) de pagina gaat naar de (hier lege) bladwijzer wegens de href="#" die verwijst naar waar de link heen gaat, en (2) de wissel-functie wordt aan of uit gezet.
Maar met javascript is er ook nog iets om de href="..." uit te zetten. Dan werkt bij een klik alleen de wisselfunctie en gaat de pagina niet naar een andere pagina of naar een bladwijzer.
Dat is de opdracht return false (geef terug: onwaar), d.w.z.: "voer de opdracht van het javasdcript uit (=wissel), en doe daarna niets meer". Dat voegen we toe aan de code, die nu compleet is:
Code:
[font=courier][B]<a href="#" onclick="wissel()[/B]; [B]return false">[/B]
   <img src="intressesbutton.jpg" width="140" height="35" alt="Intresses-button" border="0"/>
</a>
<div id="schaapje">... enz.[/font]
(Na wissel() staat hier een puntkomma) Let op: géén dubbele punt tussen return en false, anders werkt het niet (vind ik niet logisch, maar zo moet het nu eenmaal).
Nu ben je ook van het hekje af in de adresregel van de browser. :)

5. Klaar?
Bijna. Nu moeten de pagina en het bestandje menu-klik.js alle twee geupload worden (in hetzelfde mapje).

En verder?
Er valt nog een hoop meer te vertellen...
  • Bijvoorbeeld dat het misschien wel mooi zou zijn als de twee verschijnende wissel-knoppen iets meer naar rechts staan, zodat duidelijk is dat ze onder de Interesses-button horen. *)
  • Dan moet je in je css in de head een regeltje toevoegen, dat zegt dat alle links in de div met id="schaapje" een stukje vanaf de linker-kantlijn (margin) moeten komen te staan: #schaapje a { margin-left: 15px; }
  • En bijvoorbeeld dat als iemand javascript uit heeft staan, het hele submenu onbereikbaar is. En dat daar weer een andere wissel-truc voor bestaat (de twee knoppen standaard aanzetten, maar met javascript meteen bij het openen van de pagina weer uitzetten; en daarna klikken voor het wisselen). Dat vraagt uitbreiding van het script met een nieuwe functie.
  • En bijvoorbeeld dat er betere manieren zijn dan display:none, waardoor de pagina toegankelijker wordt voor mensen die met een voorlees-browser werken (bv. blinden kunnen zo toch internetten).
Maar dit soort dingen vallen meer in de rubriek "Geavanceerd". - Als je daar iets meer over weten wilt: vragen!

En als het goed is kan je nu je verschijn- en verdwijntruc met het bovenstaande aan de praat krijgen. Klopt dat?

Succes!
CSShunter

*) Oja, bij "interesses" hoort er in de spelling die e tussen: je hoort 'm niet maar ziet 'm wel!
 
csshunter, ontzettend bedankt :D
geweldige uitleg. zo krijg je in ieder geval door wat je nou eigenlijk doet. geweldig.

hij werkt inderdaad nu ook zoals ik m wil hebben. dat met het verschuiven (die 15px) heb ik geprobeerd maar vond ik toch niet zo mooi. Verder denk ik dat het ook wel duidelijk is dat het bij intEresses (;)) hoort omdat ik de vormgeving van de knop daar anders heb gemaakt.
Over dat wat je noemt als "geavanceerd" zou ik graag meer leren. Ik begin nog maar net een beetje sirieus met html, css, js en dergelijke dus er valt nog veel te leren. Dit zou ik dan ook graag doen. Dus mocht je tijd hebben om nog zo'n geweldige uitleg op te zetten, graag, hier zal ik dan ook zeker gebruik van maken.

nog maals bedankt.

als de site helemaal klaar is (wat tie over een week moet zijn) dan zal ik hier de link zeker neerzetten.

Groeten Jordi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan