Hallo Gemeinde,
leider hänge ich gerade an einer Sache, bei der ich hoffe von Euch den weiterbringenden ultimativen Tipp zu bekommen. Es geht um Folgendes:
Ich habe eine Prototype / Javascript Klasse, welche asynchron alle Thumbnails eines Albums einer Galerie ermittelt. Es wird ein JSON String zurückgeliefert, welcher letztendlich in ein Objekt aufgelöst wird. Anhand des Objektes erstelle ich pro Bild ein DIV Element, welches das jeweilige Thumbnail enthält. Nachdem alle DIV Elemente erstellt wurden, benötige ich die gesamte Breite aller DIV Elemente, um sie in einer Slide-Show darzustellen. An sich alles machbar und funktioniert soweit auch.
Es gibt lediglich ein Problem beim ermitteln der gesamten Breite. Zunächst aber mal der Code in gekürzter Fassung ...
Das Augenmerk gilt der Funtion setMaxWidth. Diese Funtion liest alle erstellten DIV Elemente aus und ermittelt die Breite und addiert diese zur Gesamtbreite zusammen. Solang ich das alert() in dieser Funktion belasse, funktioniert alles wie gewünscht. Wenn ich das alert() rausnehme bekomme ich eine maximale Breite von lediglich 300 Pixeln, obwohl die Breite über 2000 Pixel hinaus gehen müsste.
Ich habe es schon mit der window.setTimeout() Funktion probiert, um ein Delay im Funktionsablauf zu erzeugen. Aber klappt auch nicht. Gibt es hier einen Lösungsansatz?
Danke schon mal für die möglichen Antworten.
leider hänge ich gerade an einer Sache, bei der ich hoffe von Euch den weiterbringenden ultimativen Tipp zu bekommen. Es geht um Folgendes:
Ich habe eine Prototype / Javascript Klasse, welche asynchron alle Thumbnails eines Albums einer Galerie ermittelt. Es wird ein JSON String zurückgeliefert, welcher letztendlich in ein Objekt aufgelöst wird. Anhand des Objektes erstelle ich pro Bild ein DIV Element, welches das jeweilige Thumbnail enthält. Nachdem alle DIV Elemente erstellt wurden, benötige ich die gesamte Breite aller DIV Elemente, um sie in einer Slide-Show darzustellen. An sich alles machbar und funktioniert soweit auch.
Es gibt lediglich ein Problem beim ermitteln der gesamten Breite. Zunächst aber mal der Code in gekürzter Fassung ...
Code:
var Gallery = Class.create({ albumID : 0, itemCount : 0, initialize : function(albumID) { this.albumID = albumID; new Ajax.Request('index.php?action=Foo&do=Bar&albumID='+albumID, { method : 'post', onComplete : function(transport) { var data = transport.responseText.evalJSON(true); ... } }); }, createImageContainer : function(imagePath, image) { var itemDiv = new Element('div', { 'class' : 'foo', 'id' : 'item-' + this.itemCount }); var itemImage = new Element('img', { 'src' : imagePath + image['src'], 'alt' : image['caption'] }); itemDiv.appendChild(itemImage); $('imageContainer').appendChild(itemDiv); }, setMaxWidth : function() { var maxWidth = 0; $$('div[id*="item-"]').each(function(item) { maxWidth = maxWidth + item.getWidth(); alert(maxWidth); }); $('imageContainer').setStyle({ width: maxWidth + 'px' }); } });
Ich habe es schon mit der window.setTimeout() Funktion probiert, um ein Delay im Funktionsablauf zu erzeugen. Aber klappt auch nicht. Gibt es hier einen Lösungsansatz?
Danke schon mal für die möglichen Antworten.
Kommentar