Beste Allemaal,
Ik ben bezig om een tabelletje met gegevens via json op mijn website te krijgen.
Dat is gelukt echter nu zit ik met de vraag hoe ik op een nette manier de gegevens van het aangeklikte record kan opvragen. Na wat ge-google en uitgeprobeer kom ik op 3 - eigenlijk 4 manieren uit waarop ik het kan doen.
1. het hele record object toevoegen aan het dom element om het zo later op te vragen
2. Het huidige json object in een globale var opslaan en het record index nr aan het dom element toevoegen
3. Een functie aan het dom object toevoegen welke direct het record object teruggeef.
Misschien is bovenstaand wat onduidelijk dus even de voorbeelden erbij.
Allemaal pseudo code overigens. Het gaat om het idee)
Dit is wat er b.v. binnen komt via xhr
Dit is een stukje javascript waarbij ik alle drie de mogelijkheden uitprobeer.
Wat ik zelf rottig vind is dat ik aan elke cell nu of het object of de index of de functie moet toewijzen.
Natuurlijk zou ik het ook kunnen toewijzen aan de "TR" en dan via parent ophalen.. maar dan blijft even de vraag wat nu de beste lek-vrije methode is.
Ik ben bezig om een tabelletje met gegevens via json op mijn website te krijgen.
Dat is gelukt echter nu zit ik met de vraag hoe ik op een nette manier de gegevens van het aangeklikte record kan opvragen. Na wat ge-google en uitgeprobeer kom ik op 3 - eigenlijk 4 manieren uit waarop ik het kan doen.
1. het hele record object toevoegen aan het dom element om het zo later op te vragen
2. Het huidige json object in een globale var opslaan en het record index nr aan het dom element toevoegen
3. Een functie aan het dom object toevoegen welke direct het record object teruggeef.
Misschien is bovenstaand wat onduidelijk dus even de voorbeelden erbij.
Allemaal pseudo code overigens. Het gaat om het idee)
Dit is wat er b.v. binnen komt via xhr
JSON:
1
| {"records":[{"name":"Vorlox","address":"Fooweg 27 Schiedam"},{"name":"Vorloxientje","address":"Generaal foostraat 18 Huizerveen"},{"name":"Vorloxette","address":"Foodijk 6 R-dam"}]} |
Dit is een stukje javascript waarbij ik alle drie de mogelijkheden uitprobeer.
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
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
| (function () { //Var voor manier 2 var currentJsonObject = null; //onRecordClick function onRecordClick(e) { e = e || window.event; var oEl = e.srcElement || e.target, recordObject; //MANIER 1 if (typeof oEl.recordObject === 'object') { alert(oEl.recordObject.name); } //MANIER 2 if (typeof oEl.recordIndex !== 'undefined') { recordObject = currentJsonObject[oEl.recordIndex]; if (recordObject) { alert(recordObject.name); } } //MANIER 3 if (typeof oEl.getRecordObject === 'function') { recordObject = oEl.getRecordObject(); alert(recordObject.name); } } //renderTable function renderTable(jsonObject) { //Var var table = document.createElement('table'), tbody = document.createElement('tbody'), tr, td, i, l, k; //Map to global (Manier 2) currentJsonObject = jsonObject; //Count l = jsonObject.records.length; //Append table.appendChild(tbody); //Loop for (i = 0; i < l; i++) { //Map k = jsonObject.records[i]; //Create record tr = document.createElement('tr'); tbody.appendChild(tr); //Fill name cell td = document.createElement('td'); td.innerHTML = k.name; td.onclick = onRecordClick; //MANIER 1 td.recordObject = k; //MANIER 2 td.recordIndex = i; //MANIER 3 td.getRecordObject = function (recordObject) { return function() { return recordObject; } }(k); //Append tr.appendChild(td); //-- //Fill address cell td = document.createElement('td'); td.innerHTML = k.address; td.onclick = onRecordClick; //MANIER 1 td.recordObject = k; //MANIER 2 td.recordIndex = i; //MANIER 3 td.getRecordObject = function (recordObject) { return function() { return recordObject; } }(k); //Append tr.appendChild(td); } //Add table to body document.body.appendChild(table); } })(); |
Wat ik zelf rottig vind is dat ik aan elke cell nu of het object of de index of de functie moet toewijzen.
Natuurlijk zou ik het ook kunnen toewijzen aan de "TR" en dan via parent ophalen.. maar dan blijft even de vraag wat nu de beste lek-vrije methode is.
[ Voor 4% gewijzigd door vorlox op 13-01-2009 20:09 . Reden: ff nog wat code aangepast ]
