Javascript 如何访问eventlistener外部的变量?
我想制作一个js代码,生成一个关于所选图片的列表,包括当前图片的缩略图、文件名和文件大小。但是有点问题,因为我无法访问文件名和文件大小,因为eventListener没有看到它。有解决办法吗Javascript 如何访问eventlistener外部的变量?,javascript,jquery,filereader,Javascript,Jquery,Filereader,我想制作一个js代码,生成一个关于所选图片的列表,包括当前图片的缩略图、文件名和文件大小。但是有点问题,因为我无法访问文件名和文件大小,因为eventListener没有看到它。有解决办法吗 $('#media_uploader').change( function() { var files = document.getElementById("media_uploader").files; var output = document.getElementById("info"
$('#media_uploader').change( function() {
var files = document.getElementById("media_uploader").files;
var output = document.getElementById("info");
output.innerHTML = '';
for(var i = 0; i< files.length; i++)
{
var file = files[i];
if( !file.type.match('image') )
continue;
var picReader = new FileReader();
picReader.addEventListener("load",function(event){
var picFile = event.target;
var div = document.createElement("div");
div.innerHTML = '<img src="' + picFile.result + '" />';
var lineNode = document.createElement('div');
lineNode.setAttribute('class','uploaded_file_line');
var fileThbDivNode = document.createElement('div');
fileThbDivNode.setAttribute('class','uploaded_file_thb');
fileThbDivNode.appendChild(div);
lineNode.appendChild( fileThbDivNode );
var fileNameDivNode = document.createElement('div');
fileNameDivNode.setAttribute('class','uploaded_file_name');
var fileNameNode = document.createElement('input');
fileNameNode.setAttribute('value',picFile.name);
fileNameDivNode.appendChild( fileNameNode );
lineNode.appendChild( fileNameDivNode );
var fileExtensionDivNode = document.createElement('div');
fileExtensionDivNode.setAttribute('class','uploaded_file_extension');
var fileExtensionNode = document.createElement('span');
fileExtensionNode.innerHTML = "JPG";
fileExtensionDivNode.appendChild( fileExtensionNode );
lineNode.appendChild( fileExtensionDivNode );
var fileSizeDivNode = document.createElement('div');
fileSizeDivNode.setAttribute('class','uploaded_file_size');
var fileSizeNode = document.createElement('span');
fileSizeNode.innerHTML = Number((((picFile.size)/1024)/1024).toFixed(3)) + " Mbytes";
fileSizeDivNode.appendChild( fileSizeNode );
lineNode.appendChild( fileSizeDivNode );
var clearDivNode = document.createElement('div');
clearDivNode.setAttribute('class','clear');
lineNode.appendChild( clearDivNode );
output.appendChild( lineNode );
});
picReader.readAsDataURL(file);
}
});
$('#媒体上传器')。更改(函数(){
var files=document.getElementById(“媒体上传器”).files;
var输出=document.getElementById(“信息”);
output.innerHTML='';
对于(var i=0;i
尝试在更改函数之外声明var文件尝试在更改函数之外声明var文件我认为类似的方法可能适合您
var stuffIcannotSee;
var my_func=function(importStuff){
return function(e){
alert(importStuff + "This is now in the context of the function");
};
}(stuffIcannotSee);
$('#media_uploader').change( my_func);
我想这样的东西可能适合你
var stuffIcannotSee;
var my_func=function(importStuff){
return function(e){
alert(importStuff + "This is now in the context of the function");
};
}(stuffIcannotSee);
$('#media_uploader').change( my_func);