Ik heb een heel vreemd probleem. Ik bouw een array in javascript op. Als ik bij het opbouwen elk element met een alert() toon kloppen alle gegevens. Als ik vervolgens de array bekijk dan klopt het aantal entries, echter elk element toont de gegevens van de laatste entry.
dump is een klein functietje dat ongeveer hetzelfde doet als php's print_r.
Wat is nu precies de reden van dit vreemde resultaat en, belangrijker, hoe los ik het op?
JavaScript:
Zoals je ziet heb ik het geprobeerd door handmatig een index op te geven en met de push methode. Beide geven hetzelfde, vreemde resultaat.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
| function view_current(XMLRequest) { var xml_doc, entries; var playlist_item = new Array(); var i; if (XMLRequest.readyState != 4) { return false; } // set up playlist for entries playlist = new Array(); // request has been completed, process it xml_doc = XMLRequest.responseXML.getElementsByTagName('data').item(0); entries = xml_doc.getElementsByTagName('entry'); entry = entries.item(0); state = get_field(entry, 'state'); artist = get_field(entry, 'artist'); title = get_field(entry, 'title'); position = get_field(entry, 'position'); length = get_field(entry, 'length'); track_id = get_field(entry, 'track_id'); // note that we are starting at element 1 here, the // first element is reserved for the currently playing file for (i = 1; i < entries.length; i++) { entry = entries.item(i); playlist_item['time'] = get_field(entry, 'time'); playlist_item['artist'] = get_field(entry, 'artist'); playlist_item['title'] = get_field(entry, 'title'); playlist_item['album'] = get_field(entry, 'album'); playlist_item['track'] = get_field(entry, 'track'); playlist_item['year'] = get_field(entry, 'year'); playlist_item['genre'] = get_field(entry, 'genre'); playlist_item['position'] = get_field(entry, 'position'); playlist_item['id'] = get_field(entry, 'id'); // playlist.push(playlist_item); playlist[playlist.length] = playlist_item; // dit geeft voor elke entry de correcte gegevens alert(dump(playlist_item)); } // dit geeft het juiste aantal resultaten // maar elk element toont de gegevens van // de laatste entry alert(dump(playlist)); update_screen(); update_playlist(); } |
dump is een klein functietje dat ongeveer hetzelfde doet als php's print_r.
Wat is nu precies de reden van dit vreemde resultaat en, belangrijker, hoe los ik het op?
Ik ontken het bestaan van IE.