Momenteel ben ik bezig met een formulier waarop iemand kan aangeven hoeveel deelnemers er zijn. Voor iedere deelnemer moeten er nog een aantal dingen ingevuld worden, en moeten er dus ook nieuwe input-velden komen.
Nou ben ik een vrijwel absolute javascript-n00b, maar ik ben er met enig zoek- en leeswerk achter gekomen dat ik elementen toe moet voegen aan de DOM-tree. Het stuk HTML dat per deelnemer moet worden toegevoegd, is het volgende:
Nou ben ik tot het volgende stuk javascript gekomen, wat stuk voor stuk de verschilende elementen en inhoud aanmaakt:
Een enorme waslijst dus, en dan te bedenken dat daar de input-velden nog niet eens tussen zitten, met al hun attributen
Mijn vraag is, kan dit niet véél simpeler?
Uiteraard moet ik nog dingen toevoegen als automatische nummering, en een functie die de boel plaatst, maar dat is van later belang, en daar kom ik ook wel uit (denk ik).
Nou ben ik een vrijwel absolute javascript-n00b, maar ik ben er met enig zoek- en leeswerk achter gekomen dat ik elementen toe moet voegen aan de DOM-tree. Het stuk HTML dat per deelnemer moet worden toegevoegd, is het volgende:
HTML:
1
2
3
4
5
6
7
8
9
| <h4>Deelnemer 1</h4> <dl class='reserveer'> <dt><label for='voornaam'>Voorna(a)m(en):</label></dt> <dd><input style='width:250px;' name='voornaam' id='voornaam' type='text' size='20' maxlength='50' /></dd> <dt><label for='achternaam'>Achternaam:</label></dt> <dd><input style='width:250px;' name='achternaam' id='achternaam' type='text' size='20' maxlength='50' /></dd> <dt><label for='geboortedatum'>Geboortedatum <em>(dd-mm-jjjj)</em>:</label></dt> <dd><input style='width:75px;' name='geboortedatum' id='geboortedatum' type='text' size='10' maxlength='10' /></dd> </dl> |
Nou ben ik tot het volgende stuk javascript gekomen, wat stuk voor stuk de verschilende elementen en inhoud aanmaakt:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| function addDeelnemer() { var div = document.createElement('div'); var h4 = document.createElement('h4'); var dl = document.createElement('dl'); var dt_voornaam = document.createElement('dt'); var dt_achternaam = document.createElement('dt'); var dt_geboortedatum = document.createElement('dt'); var dd_voornaam = document.createElement('dd'); var dd_achternaam = document.createElement('dd'); var dd_geboortedatum = document.createElement('dd'); dl.setAttribute('class', 'reserveer'); // .setAttribute('', ''); var h4_tekst = document.createTextNode('Deelnemer'); var dt_voornaam_tekst = document.createTextNode('Voornaam'); var dt_achternaam_tekst = document.createTextNode('Achternaam'); var dt_geboortedatum_tekst = document.createTextNode('Geboortedatum'); var dd_voornaam_tekst = document.createTextNode('Voornaam dd'); var dd_achternaam_tekst = document.createTextNode('Achternaam dd'); var dd_geboortedatum_tekst = document.createTextNode('Geboortedatum dd'); h4.appendChild(h4_tekst); dt_voornaam.appendChild(dt_voornaam_tekst); dt_achternaam.appendChild(dt_achternaam_tekst); dt_geboortedatum.appendChild(dt_geboortedatum_tekst); dd_voornaam.appendChild(dd_voornaam_tekst); dd_achternaam.appendChild(dd_achternaam_tekst); dd_geboortedatum.appendChild(dd_geboortedatum_tekst); dl.appendChild(dt_voornaam); dl.appendChild(dd_voornaam); dl.appendChild(dt_achternaam); dl.appendChild(dd_achternaam); dl.appendChild(dt_geboortedatum); dl.appendChild(dd_geboortedatum); div.appendChild(h4); div.appendChild(dl); } |
Een enorme waslijst dus, en dan te bedenken dat daar de input-velden nog niet eens tussen zitten, met al hun attributen
Mijn vraag is, kan dit niet véél simpeler?
Uiteraard moet ik nog dingen toevoegen als automatische nummering, en een functie die de boel plaatst, maar dat is van later belang, en daar kom ik ook wel uit (denk ik).