Stukje javascript waar ik onzeker over ben

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Roel

Roel

23/09/2006 10:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
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
Gewijzigd op 01/01/1970 01:00:00 door Roel
 
PHP hulp

PHP hulp

04/05/2024 18:23:29
 
- -

- -

23/09/2006 11:02:00
Quote Anchor link
wat is het probleem
 

23/09/2006 11:06:00
Quote Anchor link
Waarvoor doe je heel de tijd een eval?
 
- -

- -

23/09/2006 11:09:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?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
}
?>
 
Roel

Roel

23/09/2006 11:19:00
Quote Anchor link
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.
 

23/09/2006 11:27:00
Quote Anchor link
function vak(parameters)
 
Roel

Roel

23/09/2006 11:43:00
Quote Anchor link
Webmakerij:
function vak(parameters)


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

Roel

23/09/2006 11:50:00
Quote Anchor link
Maar zou iemand me anders een debugger ofzo kunnen vertellen waarmee ik gewoon exact zie wat hij doet per regel zodat ik echt weet wat er mis gaat?
 
Rens nvt

Rens nvt

23/09/2006 11:59:00
Quote Anchor link
@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...

Ik hoor het graag van je!
 
Roel

Roel

23/09/2006 13:35:00
Quote Anchor link
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...
 
PHP Newbie

PHP Newbie

23/09/2006 13:40:00
Quote Anchor link
firefox geeft op je voorbeeldlink:

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)
 
Rens nvt

Rens nvt

23/09/2006 13:50:00
Quote Anchor link
@Roel, wat PHP Newbie zegt is correct, alleen denk ik niet dat jij daar veel mee opschiet ;-)

Wat PHP Newbie in 10 woorden probeert te zeggen is het volgende:

Als je Firefox installeert heb je daarin een Javascript console. Die geeft netjes alle errors van Javascript weer. Je kunt deze vinden onder het menu Extra.
In dit geval geeft hij 2 errors aan. De eerste is "unterminated string literal", dit betekent dat je een string niet juist hebt afgesloten (bijvoorbeeld een missende " of ')
De 2e foutmelding is "start is not defined". Deze betekent dat de functie start niet gedefinieerd is. Dit komt doordat de eerste error een parse-error in het script is... Hierdoor kan hij het niet juist parsen, en een deel (in dit geval ook de start functie) valt weg
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
 
Rens nvt

Rens nvt

23/09/2006 13:54:00
Quote Anchor link
Ik zie trouwens ook je fout al...

Javascript gaat anders om met regeleinden dan PHP... Je kunt niet zomaar ongestraft verder gaan op de volgende regel.

In PHP kun je het volgende doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  echo "hoi
            bezoeker"
;
?>

Dit geeft gewoon "hoi bezoeker" weer.

In Javascript moet je elke regel juist afsluiten.
Om het op jouw manier toch overzichtelijk te houden zou je het volgende kunnen doen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
  var htmlcode = "<table>";
        htmlcode += "<tr>";
          htmlcode += "<td>";
?>

enz. enz.

Je moet hier voor jezelf maar een besluit in nemen wat je handig vindt...
 
Roel

Roel

23/09/2006 14:08:00
Quote Anchor link
Oh ok, bedankt!
Echt stom dat ik de Javascript console over het hoofd gezien had :D
Bedankt voor de hulp allemaal, nu kom ik tenminste weer verder met javascript leren :)
 
Roel

Roel

23/09/2006 21:59:00
Quote Anchor link
Nog een vraag:
Stel je hebt een input in een form in een div, en je wilt deze alle 3 by id gebruiken om de waarde van de inputr op te vragen.
Hoe doe je dat dan?
Ik deed dit:
document.getElementById('div').getElementById('form').getElementById('input').value

Maar dan geeft hij dus de melding dat de functie getElementById('div').getElementById niet bestaat.
 
Rens nvt

Rens nvt

23/09/2006 22:12:00
Quote Anchor link
Klopt ;-)

getElementById is een "child" van document, maar niet van zichzelf...

Ik weet niet precies wat je probeert te bereiken... Maar je kunt overal op de pagina de waarde van een inputfield opvragen via het id dat hij heeft. Je doet dit via document.getElementById("id").value

Het maakt niet uit of het inputfield in een div of form zit.
 
Roel

Roel

23/09/2006 22:25:00
Quote Anchor link
Oh lol, heb ik weer es bij de verkeerde scripts afgekeken :P
Tjezus wat voel ik me weer dom...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.