无法将变量传递给函数

时间:2017-04-02 00:47:37

标签: javascript html html5

我想将当前索引传递给通过FileApi读取图像并显示它们预览的函数:

for(var i = 0, f; f = files[i]; i++) {
  if (!f.type.match("image.*")) {
    continue;
  }

  var reader = new FileReader();
  reader.onload = (function(theFile) {
    return function(e) {
      var dv = document.createElement("div");
      //.............

    };
  })(f);

  reader.readAsDataURL(f);
}

我试过这个:

  //.......
  var reader = new FileReader();
  reader.onload = (function(theFile, i2) {

    //i2 is defined here

    return function(e) {
      var dv = document.createElement("div");

      //i2 isn't defined here



    };
  })(f, i);

但是你可以看到,i2没有定义。如何解决?

1 个答案:

答案 0 :(得分:-1)

如果你稍微整理了包装函数,那么一切都可以正确确定范围。在这里,我基本上将整个循环体包裹在自调用函数中。然后,onload处理程序只是一个普通的旧函数赋值。在您的生产代码中,您可以删除虚拟负载。

 8.    return a + b;  -- Error!
                |
    >>> invalid operand types for operator "+"
    >>> left operand has type "Apples" defined at line 2
    >>> right operand has type "Oranges" defined at line 3