Spring MVCを使用していますが、データベース内のレコードを検索し、レコードのリストを別のページに返すフォームがあります。ただし、返されるデータはタグに画像を描画します。フォームには最初の画像のみが描画され、残りは描画されません。これはjqueryのループ内のクロージャーに関係していることは知っていますが、ここでどのように克服できますか?
jscriptにいくつかの編集を加えましたが、最初の画像のみがすべてのキャンバスに表示されます
JavaScript:
$(document).ready(function(){
$(".photos").each(function(i){
if ($(this).val() != '') {
alert($(this).val());
var image = new Image();
var foto = $(".photos").val();
image.src = $(".photos").val();
image.onload = function(){
//var foto = $(".photos").val();
//image.src = $(".photos").val();
$(".canvas").each(function(i){
var ctx = document.getElementsByClassName("canvas")[i].getContext('2d');
ctx.drawImage(image,0,0, 320, 240);
});
}
}
});
});
CitizenList.jsp:
<title>Citizen Search Results</title>
</head>
<body>
<c:forEach items="${citizens}" var="citizen">
<div><p><canvas class="canvas" height="240" width="320"></canvas></div>
First name:- ${citizen.fName} , Last Name:- ${citizen.lName}
<input type="text" value="${citizen.photo}" class="photos"/>
</c:forEach>
</body>
</html>