javascript - html Canvas : insert multiple images into separate canvas

标签 javascript html image canvas

我有多个 Canvas ,每个 Canvas 都有 data-id 属性,用于检索 dataURL 以便绘制图像,如下所示:

<canvas data-id='2' class='drawing-result>

以下只会将它们全部放在最后一个 Canvas 中:

var $canvases = $(".drawing-result");
for (var i=0; i<$canvases.length; i++){
  var canvas = $canvases.get(i);
  var context = canvas.getContext('2d');
  var imageObj = new Image();
  imageObj.onload = function(){
    context.drawImage(this, 0, 0);
  };
  // skipping the code for retrieving dataURL using data-id
  imageObj.src = dataURL;

我怀疑这可能与浅复制某些东西有关,但事实并非如此,因为我把 var 放在各处。

最佳答案

JavaScript 的 var 变量声明是函数作用域,而不是 block 作用域。每次循环运行时,您的上下文都会被覆盖。

使用 jQuery 的 .each() 代替 for 循环功能:

$(".drawing-result").each(function (i, canvas) {
  var context = canvas.getContext('2d');
  var imageObj = new Image();
  imageObj.onload = function(){
    context.drawImage(this, 0, 0);
  };
  // skipping the code for retrieving dataURL using data-id
  imageObj.src = dataURL;
});

关于javascript - html Canvas : insert multiple images into separate canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499130/

相关文章:

html - 将圆形图像添加到方形 Div 的顶部中心

javascript - 添加 &lt;script&gt; 元素时 CSS 翻译转换停止工作

image - 需要在原理图中找到直线(图像)

c# - 将图形对象转换为位图

javascript - 使用 JavaScript 向 DOM 添加元素

javascript - 这个js堆图是不是很着急?我该如何解决?

javascript - d3.js 中的转义字符滴答声

html - 全宽菜单通过CSS支持IE7吗?

image - 从图像创建 .flv

javascript - nodejs 引用错误 : oneTimeCode is not defined