自执行函数的魔力

  <input onchange="fileChange3(this.files)" type="file" id="upload_file3" multiple style="display: none"/>

function fileChange3( files ){
// console.log( files )
var f = document.getElementById(“upload_file3”).value;
if( f == “” )
{ alert(“请上传图片”);return false;}
else
{
if(!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f))
{
alert(“图片类型必须是.gif,jpeg,jpg,png中的一种”)
return false;
}
}
for (var i = 0; i < files.length; i++) {
console.log(files[i])
if(files.length){
var file = files[i];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(){
file.src = this.result;
document.getElementById(“clearfix”).innerHTML+= ‘

  • ’+file.name+’


  • };
    }
    };

    		}
    

    ** 渲染input上传的图片时获取的文件名只有最后选择的那个图片的名字,打印i后发现只有最后上传的那个i,所以就用自执行函数(function(i){})(i)这样就可以打印出来了。。**
    function fileChange3( files ){
    // console.log( files )
    var f = document.getElementById(“upload_file3”).value;
    if( f == “” )
    { alert(“请上传图片”);return false;}
    else
    {
    if(!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f))
    {
    alert(“图片类型必须是.gif,jpeg,jpg,png中的一种”)
    return false;
    }
    }
    for (var i = 0; i < files.length; i++) {
    console.log(files[i])
    if(files.length){
    (function(i){
    var file = files[i];
    var reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function(){
    file.src = this.result;
    document.getElementById(“clearfix”).innerHTML+= ‘

  • ’+file.name+’


  • };

    	        	 	})(i)
    					   
    		   		 }
    	        };
    		 
    	}
    

    (function(i){
    })(i) 第一个i是形参,第二个i是实参,每次执行是传递的是上级for循环里面的i

    也可以传参传file但是reader.readAsDataURL(file);放在渲染后面
    function fileChange3(files){
    // console.log( files )
    var f = document.getElementById(“upload_file3”).value;
    if(f === “”){
    alert(“请上传图片”);
    return false;
    }else{
    if(!/.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){
    alert(“图片类型必须是.gif,jpeg,jpg,png中的一种”)
    return false;
    }
    }
    for(var i = 0; i < files.length; i++){
    console.log(files[i]);
    if(files.length){
    var file = files[i];
    var reader = new FileReader();
    reader.onload = (function(file){
    return function(){
    file.src = this.result;
    document.getElementById(“clearfix”).innerHTML += ‘

  • ’ + file.name + ‘

  • ’;
    }
    })(file);
    reader.readAsDataURL(file);
    }
    }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值