javascript – Jquery Onload函数停止for循环,在函数内传递循环x
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Jquery Onload函数停止for循环,在函数内传递循环x,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1259字,纯文字阅读大概需要2分钟。
内容图文
![javascript – Jquery Onload函数停止for循环,在函数内传递循环x](/upload/InfoBanner/zyjiaocheng/808/fdec0ed387b94068950b7b2e18698bc5.jpg)
我正在使用dataTransfer将XMLHttpRequest中的图像文件传递给此函数readfiles(文件)
我想要做的是同时在reader.onload()函数内的一行代码中预览图像和图像文件名.
并且因为将有超过1个文件传递给该函数,我将它们抛入for循环
问题是,当我尝试通过readDataURL预览图像时没关系,但文件名无法预览我认为因为reader.onload()函数停止了for循环通过图像文件循环.
这是我的代码
function readfiles(files) {
var x;
for(x = 0; x < files.length; x = x + 1) {
var reader = new FileReader();
reader.readAsDataURL(files[x]);
reader.onload = function(e) {
console.log(e.target.result);
console.log(files[x].name);
}
}
}
一直在寻找解决方案约5个小时,任何帮助!
解决方法:
ROX的答案是不对的.在他的情况下,您将看到它将输出相同的文件名4次.你需要的是一个闭包,它将在每次迭代时保持正确的上下文.您可以按如下方式实现此目的.检查小提琴http://jsfiddle.net/cy03fc8x/.
function readfiles(files) {
for(x = 0; x < files.length; x = x + 1) {
var file = files[x];
(function(file){ //this is a closure which we use to ensure each iteration has the right version of the variable 'file'
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(e) {
console.log(e.target.result);
console.log(file.name);
}
})(file); //on each iteration, pass in the current file to the closure so that it can be used within
}
}
内容总结
以上是互联网集市为您收集整理的javascript – Jquery Onload函数停止for循环,在函数内传递循环x全部内容,希望文章能够帮你解决javascript – Jquery Onload函数停止for循环,在函数内传递循环x所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。