ajax関数を介して返されたパスのリスト(10個のアイテム)からイメージを読み込み、それぞれのサイズを変更してからページを表示します。しかし、以下のコードは最初の画像(サイズ変更された画像)のみを表示し、他の画像は表示しません。印刷されたサイズが正しく見えるので、サイズ変更がうまく動作することは間違いありません。 JavaScriptのコードは以下のとおりです。JavaScriptでイメージのサイズを変更して表示するには
// Helper function
function scaleSize(maxW, maxH, currW, currH){
var ratio = currH/currW;
if(currW >= maxW && ratio <= 1) {
currW = maxW;
currH = currW * ratio;
} else if(currH >= maxH) {
currH = maxH;
currW = currH/ratio;
}
return [currW, currH];
}
function get_similar_images(image_name) {
console.log(image_name)
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/get_similar",
dataType: "json",
async: true,
data: JSON.stringify({name: image_name}),
success: function(data) {
console.log(data);
image_list = data['images']
category = data['category']
for (var i=0; i<image_list.length; i++) {
var img = document.createElement("img");
img.src = "static/products/"+category+"/"+image_list[i];
var actualH;
var actualW;
var newH;
var newW;
img.onload = function(){
actualW = this.width;
actualH = this.height;
console.log(actualW, actualH)
var newSize = scaleSize(300, 300, actualW, actualH);
console.log(newSize)
img.width = newSize[0];
img.height = newSize[1];
document.getElementById('imageDiv').appendChild(img)
};
}
},
error: function(xhr, status, error) {
// console.log(xhr.responseText);
}
})
}
はSOへようこそ!まず、あなたの 'image_list.length'は1より大きいですか? –
はい、これは10項目です – Melanie
そして 'newSize'を記録すると、期待値(幅と高さが300以下)がありますか? –