Zoals gezegd, probeer ik een javascript polletje te bouwen. In mijn vorige topic gezegd dat het het mooiste / beste is om dit te doen via de DOM, ipv innerHTML. Dus ben ik nu voor het eerst hiermee aan het prutsen:
De eerste vraag die pollUpdate tegenkomt, is de multiple choice vraag "hoe gaat het met u?". Als deze beantwoord is, wordt de volgende vraag, "waarom gaat het zo" naar de div geschreven in pollText. De bedoeling is om de inhoud van "polldiv" (op dit moment de radiogroup) te vervangen door de vraag met textarea.
Vragen:
JavaScript:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| var div = null; var poll = [ {'type' : 'radio', 'ques' : 'hoe gaat het met u?', 'ansr' : ['heel goed', 'goed', 'gaat wel', 'slecht'] }, {'type' : 'text', 'ques' : 'waarom gaat het zo?' }, {'type' : 'note', 'note' : 'Bedankt voor uw medewerking!' } ]; function pollInit() { div = document.getElementById('polldiv'); pollUpdate(); } function pollUpdate() { pollQuestion(item); item++; if (item == (poll.length)) { setTimeout("div.style.display = 'none'", 1000); } } function pollQuestion(iPoll) { switch (poll[iPoll]['type']) { case 'radio': pollRadio(iPoll); break; case 'text' : pollText(iPoll) ; break; } } function pollRadio(iPoll) { var question = createNode('text', poll[iPoll]['ques']); var br = createNode('br'); div.appendChild(question); div.appendChild(br); for (i = 0; i < poll[iPoll]['ansr'].length; i++) { var input = createNode('input', {'type' :'radio', 'onclick' : 'pollUpdate()'}); var text = createNode('text', poll[iPoll]['ansr'][i]); var label = createNode('label'); var br = createNode('br'); label.appendChild(input); label.appendChild(text); div.appendChild(label); div.appendChild(br); } } function pollText(iPoll) { var question = createNode('text', poll[iPoll]['ques']); var textarea = createNode('textarea'); div.appendChild(question); div.appendChild(textarea); } |
De eerste vraag die pollUpdate tegenkomt, is de multiple choice vraag "hoe gaat het met u?". Als deze beantwoord is, wordt de volgende vraag, "waarom gaat het zo" naar de div geschreven in pollText. De bedoeling is om de inhoud van "polldiv" (op dit moment de radiogroup) te vervangen door de vraag met textarea.
Vragen:
- hoe leeg ik de div zodat ik hem opnieuw kan vullen?
- wat is het voordeel van DOM boven innerHTML? Ik heb het idee dat innerHTML sneller is (en makkelijker
)
- heb je algemene opmerkingen over deze code? Ik hoor het graag!
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."