Ik heb een probleem bij het dynamisch genereren van een tabel.
Ik heb een tabel waarbij met <th> elementen de gewenste breedte van de table-cells wordt opgegeven. Een voorbeeldje:
Ik heb al gekeken welke content er precies wordt gegenereerd (selecteren en rechtsklikken 'view selection source' in Fx). De content is precies gelijk aan de content van het php script, dus daar zou de fout niet moeten kunnen zitten.
Wat kan ik doen om dit probleem op te lossen?
Ik heb een tabel waarbij met <th> elementen de gewenste breedte van de table-cells wordt opgegeven. Een voorbeeldje:
HTML:
Nu heb ik een ajax-scriptje waarmee ik deze zoekresultaten opvraag. Deze haalt dan de bestaande elementen uit de tabel en plaatst daar de nieuwe resultaten in. 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
| <table> <thead> <tr class="odd"> <th style="width: 19%;">Voornaam</th> <th style="width: 19%;">Voorvoegsel</th> <th style="width: 19%;">Achternaam</th> <th style="width: 15%;">Geboortedatum</th> <th style="width: 28%;">Acties</th> </tr> </thead> <tbody> <tr class="even"> <td><a href="/person/view/2">Jaap</a></td> <td><a href="/person/view/2"></a></td> <td><a href="/person/view/2">Smelik</a></td> <td><a href="/person/view/2">07/05/1981</a></td> <td> <a href="/personProfile?pid=2">Dossier</a> <a href="/expenseInsert?tsucode=jsmlk07051981">Onkosten</a> <a href="/deductionInsert?tsucode=jsmlk07051981">Vorderingen</a> <a href="/scoreOutage?action=view&tsucode=jsmlk07051981">Uitval</a> </td> </tr> <tr class="odd"> <td><a href="/person/view/16">Melle</a></td> <td><a href="/person/view/16"></a></td> <td><a href="/person/view/16">Smelik</a></td> <td><a href="/person/view/16">24/10/1985</a></td> <td> <a href="/personProfile?pid=16">Dossier</a> <a href="/expenseInsert?tsucode=msmlk24101985">Onkosten</a> <a href="/deductionInsert?tsucode=msmlk24101985">Vorderingen</a> <a href="/scoreOutage?action=view&tsucode=msmlk24101985">Uitval</a> </td> </tr> </tbody> </table> |
JavaScript:
Zoals je ziet creeert dit script de complete inhoud van de tabel (met uitzondering van de th elementen, die blijven staan). Het probleem hierbij is dat de gegenereerde content helemaal links komt te staan, net alsof alles in 1 <td> zit.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
| function search_view(XMLRequest) { var xml_doc; var info, status, message; var tsucode, personid, name_first, name_suffix, name_last, birthday; var table, rows; var tr, td, a, text; var i; if (XMLRequest.readyState != 4) { return false; } // request has been completed. process it xml_doc = XMLRequest.responseXML.getElementsByTagName('result').item(0); info = xml_doc.getElementsByTagName('info').item(0); status = info.getElementsByTagName('status').item(0).firstChild.data; message = info.getElementsByTagName('message').item(0).firstChild.data; if (status != 'success') { alert(message); return false; } table = document.getElementsByTagName('table').item(0); rows = table.getElementsByTagName('tr'); while (rows.length > 1) { table.removeChild(rows[1]) } var tr_class = 'odd'; var data = xml_doc.getElementsByTagName('data').item(0); var entries = data.getElementsByTagName('entry'); for (i = 0; i < entries.length; i++) { tr_class = tr_class == 'odd' ? 'even' : 'odd'; tsucode = get_field(entries[i], 'tsucode'); personid = get_field(entries[i], 'personid'); name_first = get_field(entries[i], 'name_first'); name_suffix = get_field(entries[i], 'name_suffix'); name_last = get_field(entries[i], 'name_last'); birthday = get_field(entries[i], 'birthday'); tr = document.createElement('tr'); tr.setAttribute('class', tr_class); td = document.createElement('td'); a = document.createElement('a'); text = document.createTextNode(name_first); a.setAttribute('href', basedir+'person/view/'+personid); a.appendChild(text); td.appendChild(a); tr.appendChild(td); td = document.createElement('td'); a = document.createElement('a'); text = document.createTextNode(name_suffix); a.setAttribute('href', basedir+'person/view/'+personid); a.appendChild(text); td.appendChild(a); tr.appendChild(td); td = document.createElement('td'); a = document.createElement('a'); text = document.createTextNode(name_last); a.setAttribute('href', basedir+'person/view/'+personid); a.appendChild(text); td.appendChild(a); tr.appendChild(td); td = document.createElement('td'); a = document.createElement('a'); text = document.createTextNode(date_format(birthday)); a.setAttribute('href', basedir+'person/view/'+personid); a.appendChild(text); td.appendChild(a); tr.appendChild(td); td = document.createElement('td'); a = document.createElement('a'); text = document.createTextNode('Dossier'); a.setAttribute('href', basedir+'personProfile?pid='+personid); a.appendChild(text); td.appendChild(a); a = document.createElement('a'); text = document.createTextNode('Onkosten'); a.setAttribute('href', basedir+'expenseInsert?tsucode='+tsucode); a.appendChild(text); td.appendChild(a); a = document.createElement('a'); text = document.createTextNode('Vorderingen'); a.setAttribute('href', basedir+'deductionInsert?tsucode='+tsucode); a.appendChild(text); td.appendChild(a); a = document.createElement('a'); text = document.createTextNode('Uitval'); a.setAttribute('href', basedir+'scoreOutage?action=view&tsucode='+tsucode); a.appendChild(text); td.appendChild(a); tr.appendChild(td); table.appendChild(tr); } } |
Ik heb al gekeken welke content er precies wordt gegenereerd (selecteren en rechtsklikken 'view selection source' in Fx). De content is precies gelijk aan de content van het php script, dus daar zou de fout niet moeten kunnen zitten.
Wat kan ik doen om dit probleem op te lossen?
Ik ontken het bestaan van IE.