我有以下代码:
var canvasData;
var canvas2imgval;
imageObj1.onload = function() {
ctx.drawImage(imageObj1, 0, 0, wdOb1, hgOb1);
imageObj2.onload = function() {
ctx.drawImage(imageObj2, imgposLeft, imgposTop, wdOb2, hgOb2);
//img = c.toDataURL("image/png");
//document.write('<img src="' + img + '" width="256" height="256"/>');
//canvas2img
canvasData = c.toDataURL("image/png");
}
}
console.log("canvasData : "+canvasData );
$("#canvas2img").val(canvasData) ;
canvas2imgval = $("#canvas2img").val() ;
console.log("canvas2imgval1 : "+canvas2imgval );
问题是当我查看两个变量的值时,canvasData
为undefined
且canvas2imgval1
没有值。
我不知道我的代码有什么问题。通常,这两个变量使用JavaScript关键字var
标记为公开。
答案 0 :(得分:1)
您可以在图像onload
事件处理程序中为这些变量赋值,但在执行这些处理程序之前尝试访问它们。
为了使用这些变量,您可以创建一个在imageObj2.onload
执行后调用的函数。我还建议将canvasData
作为参数传递,而不是使用全局变量(只要它不在其他地方使用)。
var canvas2imgval;
var afterLoad = function(canvasData){
console.log("canvasData : "+canvasData );
$("#canvas2img").val(canvasData) ;
canvas2imgval = $("#canvas2img").val() ;
console.log("canvas2imgval1 : "+canvas2imgval);
}
imageObj1.onload = function() {
ctx.drawImage(imageObj1, 0, 0, wdOb1, hgOb1);
imageObj2.onload = function() {
ctx.drawImage(imageObj2, imgposLeft, imgposTop, wdOb2, hgOb2);
//img = c.toDataURL("image/png");
////////document.write('<img src="' + img + '" width="256" height="256"/>');
//canvas2img
canvasData = c.toDataURL("image/png");
afterLoad(canvasData);
}
}