商品画像のサイズを変更してボックスの中央に配置する次のJavascriptコードがあります。このコードは、onloadを呼び出すと完全に正常に機能しますが、さらに20個の製品を返すajax呼び出しがあります。ajax呼び出しの後、およびonloadの後にこの関数を呼び出すと、比率に関係なく、画像のサイズが165x165pxの正方形に変更されます。Javascriptは次のとおりです。
function resizeProductImages(optimumHeight, optimumWidth, className)
{
images = document.getElementsByTagName('img');
for(var i=0;i<images.length;i++)
{
if(images[i].className == className)
{
images[i].removeAttribute("width");
images[i].removeAttribute("height");
images[i].style.left = "0px";
images[i].style.top = "0px";
h = images[i].height;
w = images[i].width;
if(h > w)
{
images[i].height = optimumHeight;
images[i].style.position = "absolute";
images[i].style.display = "block";
var scaledown = optimumHeight/h;
var realWidth = scaledown * w;
var realHeight = optimumWidth - realWidth;
var gaps = realHeight / 2;
images[i].style.left = gaps+"px";
}
else if(w > h)
{
images[i].width = optimumWidth;
images[i].style.position = "absolute";
images[i].style.display = "block";
var scaledown = optimumWidth/w;
var realHeight = scaledown * h;
var realWidth = optimumHeight - realHeight;
var gaps = realWidth / 2;
images[i].style.top = gaps+"px";
}
else if(h == w)
{
images[i].height = optimumHeight;
images[i].width = optimumWidth;
}
}
}
}
function resizeProductCategoryImages()
{
resizeProductImages(165, 165, 'roller');
}
なぜ何かアイデアはありますか?
編集
コメントからアドバイスを受け取り、DOM呼び出しを変数に置き換えて、上記の新しいコードを投稿しました。
さらに編集
これは、関数が呼び出されたときに画像がまだ読み込まれていないため、画像のサイズが0、0であるためです。すべての画像が読み込まれるまでこの関数を待機させる方法はありますか?