Dit lijkt wellicht iets heel simpels, maar ik zie echt niet waar het probleem ligt.
Goed, om bij het begin te beginnen: de bedoeling is navigatie voor een site in elkaar te zetten. 3 'pagina's' in totaal. Pagina's tussen aanhalingstekens, omdat het in werkelijkheid geen losse pagina's zijn, maar 3 verschillende div's, welke met behulp van js tevoorschijn worden getoverd of worden verborgen.
De eerste, "news" (de voorpagina van de site), is standaard uiteraard zichtbaar (<div id="news" style="display: block;">). De andere 2 zijn standaard verborgen (... style="display: none;">).
In de <head> sectie van de desbetreffende pagina het volgende stukje javascript:
Het navigatiemenu ziet er als volgt uit:
In het externe javascript:
De bedoeling is dat de 'for' loop de 3 divs (pagina's) verbergt. De regel na de 'for' loop zou er vervolgens voor moeten zorgen dat de door gebruiker opgevraagde 'pagina' (div dus) weer zichtbaar word gemaakt.
Het (mijns inziens) vreemde probleem: de for loop en de daarop volgende regel werken niet samen! Als ik de regel voor het zichtbaar maken van een pagina weg laat, en dus alleen de for loop over blijft, worden alle 3 de divs netjes verborgen. Zet ik de zojuist genoemde regel er weer bij, dan gebeurd er he-le-maal niets (ik vermoed dat de for loop de 3 divs wel verbergt, maar de daarop volgende regel onterecht weer de voorpagina ("news") tevoorschijn tovert. WAAROM?! Het stomme is namelijk dat als ik op de plaats van de regel voor het tonen van een pagina, een document.write(element); neer plant, deze wel netjes de juiste waarde laat zien (dus 'news' indien ik in het menu op 'Frontpage (news)' klik, 'band' als ik op 'Band' klik, etc.).
Nog zoiets raars: als ik de for loop weg haal, en dus alleen de ene regel voor het tonen van een div laat staan, en dan in het navigatiemenu op 'Releases' klik, zowel de 'band' als 'releases' div tevoorschijn komen?
Tot slot: als ik i.p.v. de variable 'element' in dat ene regeltje, gewoon ...
Het lijkt wel alsof de inhoud van de variabele gewoon niet goed word doorgegeven.
Begrijp ik nu geen f.. van javascript, doe ik iets fout, of ... ?
(eenzelfde constructie pas ik overigens ook ergens anders in de pagina/het script toe, en dat doet het uitstekend).
Getest in Firefox 1.0.3 en Internet Explorer 6 overigens ...
Goed, om bij het begin te beginnen: de bedoeling is navigatie voor een site in elkaar te zetten. 3 'pagina's' in totaal. Pagina's tussen aanhalingstekens, omdat het in werkelijkheid geen losse pagina's zijn, maar 3 verschillende div's, welke met behulp van js tevoorschijn worden getoverd of worden verborgen.
De eerste, "news" (de voorpagina van de site), is standaard uiteraard zichtbaar (<div id="news" style="display: block;">). De andere 2 zijn standaard verborgen (... style="display: none;">).
In de <head> sectie van de desbetreffende pagina het volgende stukje javascript:
code:
1
| sections = new Array("news", "band", "releases"); |
Het navigatiemenu ziet er als volgt uit:
code:
1
2
3
4
5
| <div id="navigation">
<span onclick="elementretr_('news','s1');" id="s1">Frontpage (news)</a><br/>
<span onclick="elementretr_('band','s2');" id="s2">Band</a><br/>
<span onclick="elementretr_('releases','s3');" id="s3">Releases</a><br/>
</div> |
In het externe javascript:
code:
Let niet op de 'release' variabele, deze is hier niet van toepassing. 1
2
3
4
5
6
7
8
9
| function elementretr_(element, option, release) {
if (!release) {
for (a = 0; a < sections.length; a++) {
document.getElementById(sections[a]).style.display = "none";
}
document.getElementById(element).style.display = "block";
} else { hideclass('release');
document.getElementById(release).style.display = "block"; }
} |
De bedoeling is dat de 'for' loop de 3 divs (pagina's) verbergt. De regel na de 'for' loop zou er vervolgens voor moeten zorgen dat de door gebruiker opgevraagde 'pagina' (div dus) weer zichtbaar word gemaakt.
Het (mijns inziens) vreemde probleem: de for loop en de daarop volgende regel werken niet samen! Als ik de regel voor het zichtbaar maken van een pagina weg laat, en dus alleen de for loop over blijft, worden alle 3 de divs netjes verborgen. Zet ik de zojuist genoemde regel er weer bij, dan gebeurd er he-le-maal niets (ik vermoed dat de for loop de 3 divs wel verbergt, maar de daarop volgende regel onterecht weer de voorpagina ("news") tevoorschijn tovert. WAAROM?! Het stomme is namelijk dat als ik op de plaats van de regel voor het tonen van een pagina, een document.write(element); neer plant, deze wel netjes de juiste waarde laat zien (dus 'news' indien ik in het menu op 'Frontpage (news)' klik, 'band' als ik op 'Band' klik, etc.).
Nog zoiets raars: als ik de for loop weg haal, en dus alleen de ene regel voor het tonen van een div laat staan, en dan in het navigatiemenu op 'Releases' klik, zowel de 'band' als 'releases' div tevoorschijn komen?
Tot slot: als ik i.p.v. de variable 'element' in dat ene regeltje, gewoon ...
code:
... neerzet, puur om te testen, dan doet 'ie het wel goed. 1
| document.getElementById("releases").style.display = "block"; |
Begrijp ik nu geen f.. van javascript, doe ik iets fout, of ... ?
Getest in Firefox 1.0.3 en Internet Explorer 6 overigens ...
[ Voor 12% gewijzigd door Verwijderd op 21-04-2005 22:07 ]