将图像添加到JavaScript数组,然后在另一个函数调用中显示它们

时间:2014-10-16 08:24:56

标签: javascript arrays image

我在这里遇到一个小问题,我一直在试图解决这个问题,但不知何故,解决方案已经避开了我。谁能告诉我这里我做错了什么?

在函数saveImages()调用中,我必须将图像从画布保存到{Javascript数组ImageArray。我已将ImageArray声明为全局变量(即在任何函数之外)

var ImageArray = new Array(); // is this the proper way to do it?

接下来,我调用saveImages()函数。

function saveImages() {

  //here I draw on the canvas
   Image = canvas.toDataURL('image/jpeg');
   //window.open(Image, 'new_window');   // I see the window with the Jpeg Image data So I am sure that the image actually comes
   ImageArray[0].src = Image; // Looked up the internet to find that dataToURL can be used as img source
   no_of_pics_compared= ImageArray.length();
   alert('no_of_pics_compared' + no_of_pics_compared)     // I do not get this alert

}

我没有得到最后一个警告,这意味着代码中存在一些缺陷,导致它停止工作。

我希望能够多次调用此saveImages()函数,直到达到限制(例如5),并希望在单独函数调用的ImageArray中显示所有5个图像displayImages()。这就是我希望将ImageArray保持为global

的原因

有人可以告诉我如何纠正出错的地方。非常感谢提前:))

3 个答案:

答案 0 :(得分:0)

请改用它。

var array = []; array.push(Image);

答案 1 :(得分:0)

  1. 在设置ImageArray[0]属性之前,您没有初始化src。您可以改为编写以下内容:

    ImageArray[0] = {
        src: Image
    };
    
  2. 数组的length是属性,不是函数,所以它应该是:

    no_of_pics_compared = ImageArray.length;
    
  3. 问题:

    var ImageArray = new Array(); // is this the proper way to do it?
    

    是的!但您可以编写以下简短版本:

    var ImageArray = [];
    

    您可以在JavaSscript here中详细了解如何创建数组。

  4. <小时/> 最后,在上述更改后的代码:

    var ImageArray = [];
    
    function saveImages() {
       Image = canvas.toDataURL('image/jpeg');
       ImageArray[0] = {
         src: Image
       };
    
       no_of_pics_compared= ImageArray.length;
       alert('no_of_pics_compared' + no_of_pics_compared);
    
    }
    

答案 2 :(得分:0)

首先,在数组中,您必须创建要添加到数组的对象,然后将其直接推送到数组:

var ImageArray = new Array(); // Yes this is one of the proper ways to do it.
   //Second Way:
   // var ImageArray = [];
function saveImages() {

   var newImage = new Image();
   newImage.src = canvas.toDataURL('image/jpeg');
   .
   .
   .
   ImageArray.push(newImage);  
   .
   .
   .

}

而且长度是一个属性而不是一个函数所以你必须得到它:

no_of_pics_compared= ImageArray.length;