キャンバスに問題があります。 私は単一のイメージでキャンバスを描くことができますが、私はイメージごとに別のキャンバスを描画することはできません。 - データには1つのイメージしかない場合は正常に動作しますが、データに複数のイメージがある場合は動作しません。 お手伝いできますか?HTMLキャンバスイメージ - ページにマルチキャンバスイメージを描画
<script>
var h_notepad = 500;
var w_notepad = 737;
var data = [
{dataImageURL: "1_sat_1.png"},
{dataImageURL: "1_sat_2.png"},
{dataImageURL: "1_sat_3.png"},
{dataImageURL: "1_sat_4.png"}
];
for(var i = 0; i < data.length ; i++){
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
canvas.width = w_notepad;
canvas.height = h_notepad;
img.crossOrigin = 'anonymous';
img.width = w_notepad;
img.height = h_notepad;
console.log(img);
img.onload = function(){
ctx.drawImage(img, 0, 0, w_notepad, h_notepad);
};
img.src = data[i].dataImageURL;
$('body').append(canvas); \t
}
</script>
<html>
<head>
<meta charset="utf-8">
<title>DRAWING</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<meta charset="utf-8">
</head>
<body>
\t
</body>
</html>
私はあなたが最後のものだけを取得すると思います。クロージャの問題です。 onloadイベントが発生すると、 'img'と' ctx'は最後に生成されたものだけを参照します。つまり、同じキャンバスに 'data.length'時間を描画します。これを避けるには、 'this'を使用して、onloadハンドラでキャンバスの作成をラップします。\t' img.onload = function(){ \t \t var c = document.createElement( 'canvas'); \t \t document.body.appendChild(c); \t \t var ctx = c.getContext( '2d'); \t \t ctx.drawImage(this、0,0); \t \t}; ' – Kaiido