0

假设我有一个预览图像的功能

previewImages: function()
{
   var preview = document.querySelector('#img_preview');
   let iFileLength = this.files.length;
   let oldValue = iFileLength;
   console.log(oldValue);
}

this.oTweetImg.addEventListener("change", oHome.previewImages);

这里的 3 是我选择 3 个文件的地方。之后我关闭然后再次选择另一个文件并将长度重置为1。这里的1应该是4

如何保存输入文件的先前/旧长度。我试图把它放在一个变量上,但它仍然会重置长度。

我在用着<input type="file" id="tweet_img" multiple/>

4

2 回答 2

4

let oldValue = iFileLength;一旦代码退出将被遗忘previewImages。所以第二次previewImages被调用,不会再有oldValue. 您将需要使用闭包(在使用它的范围之外声明一个变量,并从该内部范围操作该变量)。

您可以存储最新的长度:

var lastSize = [];

var oHome = {
  previewImages: function() {
    var preview = document.querySelector('#img_preview');
    lastSize = this.files.length;
    console.log(lastSize);
  }
};

this.oTweetImg.addEventListener("change", oHome.previewImages);

或者您可以存储所有过去的长度:

var sizeHistory = [];

var oHome = {
  previewImages: function() {
    var preview = document.querySelector('#img_preview');
    sizeHistory.push(this.files.length);
    console.log(sizeHistory);
    console.log(sizeHistory.reduce(function(sum, size){ return sum + size; }, 0));
  }
};

this.oTweetImg.addEventListener("change", oHome.previewImages);
于 2019-09-09T07:14:01.190 回答
1

尝试以下方式,您将获得已选择的总图像数

var totalImage = 0; 
previewImages: function()
{
   var preview = document.querySelector('#img_preview');
   let iFileLength = this.files.length;
   totalImage = totalImage + iFileLength;

   console.log(totalImage); //4
}

this.oTweetImg.addEventListener("change", oHome.previewImages);
于 2019-09-09T07:21:08.030 回答