FileReader的onLoad回调的参数问题

    var images = evt.target.files;
for (var i = 0, img; img = images[i]; i++) {
if (!img.type.match('image.*')) {
    continue;
}           
var index = i;
var reader = new FileReader();
reader.onload = (function(file) {
return function(e) {
    var span = document.createElement('span');                      
    span.innerHTML = ['<br><div><img id="image_', index, '" class="thumb" src="', e.target.result,  '" title="', escape(file.name), '"/><br> <input id="text_', index,'" type="text" onkeydown="handleEvent(', index, ')" /><br> <input id="button_', index,'" type="button" value="upload" onclick="upload(', index, ')"/> </div>'].join('');
    document.getElementById('results').insertBefore(span, null);
};
            })(img);            
reader.readAsDataURL(img);

我利用input中的file类型, 加载几张图片, 希望实现一个上传机制, 每张图片都可以单独上传, 所以每个图片和文本框,按钮都有id, 这个id我想用跟i相关的变量,但是FileReader是一个异步的回调函数onLoad来实现这个过程, 请问有什么办法能把这个i传到回调的这个函数里面?

阅读 23.3k
1 个回答
新手上路,请多包涵

var reader = new FileReader();
reader.index = index;
然后在onload函数里面就可以获取到this.index就是你传的参数i

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏