私は次のものを持っています:
var ImageArray = [];
var Images = $('#ImageSelection').children('img');
var i = 0;
Images.each(function() {
var ImageSource = $(this).attr('src');
var ImageTitle = $(this).attr('alt');
var ImageHeight;
getImageDimensions(ImageSource, function(data) {
ImageHeight = data.height;
alert(typeof ImageHeight + ' ' + ImageHeight);
});
alert(typeof ImageHeight + ' ' + ImageHeight);
$(this).attr('id', i);
ImageArray[i] = {
'src': ImageSource,
'title': ImageTitle,
'height': ImageHeight,
'id': i
};
i++;
});
このコードを実行した後、ImageArray[0].height
は未定義ですが、コールバック関数のアラートは高さを適切に表示し、コールバックにないアラートはundefindを表示します。
getImageDimensions:
function getImageDimensions(path, callback) {
var img = new Image();
img.onload = function() {
callback({
height: img.height
});
}
img.src = path;
}