var onderdelen = array();
onderdelen[0] = "vak";
function start(onderdeel){
// unload alle divs
for (onderdeel2 in onderdelen){
eval("document.getElementById(div_"+onderdeel2+").style.visibility='hidden'"); //maakt alle divs weer onzichtebaar
}
eval("document.getElementById(div_"+onderdeel+").style.visibility='visible'"); //maakt bijvoorbeeld de div div_vak zichtbaar
eval("function_"+onderdeel+"()"); //moet bijvoorbeeld de functie funtion_vak() aanroepen
}
Kan iemand mij vertellen wat hier anders moet?
P.S. Als iemand een goede editor/debugger kent die dit soort fouten op kan sporen dan is dat ook welkom
<?php
var onderdelen = array();
onderdelen[0] = "vak";
function start(onderdeel){
// unload alle divs
for (onderdeel2 in onderdelen){
document.getElementById('div_'+onderdeel2).style.visibility='hidden'; //maakt alle divs weer onzichtebaar
}
document.getElementById('div_'+onderdeel).style.visibility='visible'; //maakt bijvoorbeeld de div div_vak zichtbaar
eval('function_'+onderdeel+'()'); //moet bijvoorbeeld de functie funtion_vak() aanroepen
}
?>
Is het dan ook mogelijk om een functie aan te roepen met een variabele naam zonder eval te gebruiken?
En het probleem is dat de functie function_vak() niet aangeroepen wordt.
Ik zeg toch een variabele functie, dus 1 die steeds verschilt.
Als je het script nou nog es bekijkt en een ander onderdeel gebruikt, dan moet hij ook een andere div tonen en een andere functie (die die bij de div hoort en de div invult) openen.
@Roel, probeer zo min mogelijk eval te gebruiken... het maakt je code niet overzichtelijker, en waarom zou je eval gebruiken als je het niet nodig hebt?
Een beetje hetzelfde als een open deur opentrappen...
Volgens mij is het scriptje van Jonathan de juiste manier om je script met zo min mogelijk evals uit te voeren.
Maar zou je aan willen geven wat er precies fout gaat met je scriptje? En wat de bedoeling van het scriptje is?
In je huidige voorbeeld is onderdeel2 ook een variabele waarvan we moeten gokken welke waarde hij bevat...
Ok, ik zal het wat uitgebreider vertellen, wat er fout is weet ik niet, dat is net het probleem, maargoed het idee achter het script:
Je hebt een index waarin lege divs staan, die worden als pagina's gebruikt maar het is de bedoeling dat de pagina niet hoeft te herladen.
Dit wil ik bereiken door de functie start, deze verberd eerst alle divs, en maakt dan de gekozen div zichtbaar.
Onderdeel 2 is gewoon steeds het onderdeel dat verborgen wordt, met de for variable in array loop.
De functie function_vak() maakt connectie met een php bestand en dat php bestand echo't de (school)vakken uit de database.
het geheel wordt een overhoor programma.
Het probleem is dat ik nu een pagina met een lege div krijg als ik het uitprobeer: http://ddf.ksdz.nl/overhoren/
Ik ben nog een beginner met javascript dus ik probeer door middel van dat overhoor programma wat meer over javascript te leren om mooie AJAX scripts in de toekomst te kunnen schrijven, ik heb wel al redelijk veel verstand van PHP, maar heb Javascript altijd vermijd omdat ik het gewoon eerlijk gezegd een rottaal vond: Slechte error reporting, draait op de pc van de gebruiker waardoor een hoop dingen er niet meer mee kunnen, en ik vond het onoverzichtelijk.
Maar nu begin ik wat meer de mogelijkheden te zien om het in combinatie met PHP te gebruiken dus wil het nu snel weer goed leren.
Maar ik irriteer me wel nog steeds aan de manier waarop javascript met error's omgaat: Niet tonen en gewoon niks uitvoeren...
unterminated string literal
overhoor.js (line 21)
html = '<form id="form_vak" name="form_vak" action="javascript: ">
start is not defined http://ddf.ksdz.n... (line 1)