在我正在编写的应用程序中,有一个页面,在该页面上,我从数据库中加载多个base64编码的图像,并将它们放置在JavaScript数组中。这是通过EJS模板在服务器上发生的,因此当用户接收到HTML页面时,base64编码的图像已经存在(我已经检查过了)。
接下来,使用客户端的JavaScript循环遍历画布,然后使用相应的图像数据填充每个画布。但是,我得到了一些奇怪的行为。每次只有最后一个画布被填充。
接下来,使用客户端的JavaScript循环遍历画布,然后使用相应的图像数据填充每个画布。但是,我得到了一些奇怪的行为。每次只有最后一个画布被填充。
for (var i = 1; i < 13; i++) {
var ctx = document.getElementById('canvas-' + i).getContext('2d'),
image = new Image();
image.onload = function() {
ctx.drawImage(image, 0, 0);
}
image.src = images[(i - 1)];
}
在这段代码的上方(在同一作用域内)定义了images数组。如果我像这样执行代码,只有最后一个canvas(id为“canvas-12”)将被填充。如果我将for循环的结束条件降低到例如i < 11,只有id为“canvas-10”的canvas将被填充。
我是否遗漏了什么?