Cette fois, je vais vous donner une explication détaillée des étapes pour utiliser la balise d'entrée et jquery pour implémenter la fonction de téléchargement et d'écho de plusieurs images, et comment utiliser la balise d'entrée et jquery pour implémenter la fonction de téléchargement et d'écho de plusieurs images Quelles sont les précautions Voici des cas réels, jetons un oeil.
Rendu
Faisons une démo comme celle-ci à partir de zéro
Première étape :
Améliorons d'abord notre La balise du fichier d'entrée par défaut est très moche. Embellissons-la. Si vous ne la connaissez pas, vous pouvez simplement mettre une boîte à l'extérieur, définir l'opacité de l'entrée sur 0, puis concevoir la boîte extérieure. dans le style que nous aimons. C'est tout, je l'ai fait avec désinvolture.
Style approximatif
Mettons le code source et ne parlons que de l'effet. Quiconque ne met pas le code source est juste un voyou<.>
Voici le corps<body> <p class="uploadImgBtn" id="uploadImgBtn"> <input class="uploadImg" type="file" name="file" multiple id="file"> </p> </body>
.uploadImgBtn { width: 100px; height: 100px; cursor: pointer; position: relative; background: url("img/plus.png") no-repeat; -webkit-background-size: cover; background-size: cover; } .uploadImgBtn .uploadImg { position: absolute; right: 0; top:0; width: 100%; height: 100%; opacity: 0; cursor: pointer; } //这是一个用做回显的盒子的样式 .pic{ width: 100px; height: 100px; } .pic img { width: 100%; height: 100%; }
<script> $(document).ready(function(){ //为外面的盒子绑定一个点击事件 $("#uploadImgBtn").click(function(){ /* 1、先获取input标签 2、给input标签绑定change事件 3、把图片回显 */ // 1、先回去input标签 var $input = $("#file"); // 2、给input标签绑定change事件 $input.on("change" , function(){ //补充说明:因为我们给input标签设置multiple属性,因此一次可以上传多个文件 //获取选择图片的个数 var files = this.files; var length = files.length; console.log("选择了"+length+"张图片"); //3、回显 for( var i = 0 ; i < length ; i++ ){ var fr = new FileReader(), p = document.createElement("p"), img = document.createElement("img"); p.className = 'pic'; fr.onload = function(e){ console.log("回显了图片") img.src = this.result; p.appendChild(img) document.body.appendChild(p); } fr.readAsDataURL(files[i]);//读取文件 } }) }) }) </script>
portée de fonction , dans laquelle une image est répercutée à la fois, je pense que nous pouvons résoudre il. Essayons-le. Notre front-end peut utiliser chaque solution de jquery, qui est livrée avec une fonction de rappel , formant une portée de fonction. Jetons un coup d'œil au code
<script> $(document).ready(function(){ //为外面的盒子绑定一个点击事件 $("#uploadImgBtn").click(function(){ /* 1、先获取input标签 2、给input标签绑定change事件 3、把图片回显 */ // 1、先回去input标签 var $input = $("#file"); // 2、给input标签绑定change事件 $input.on("change" , function(){ //补充说明:因为我们给input标签设置multiple属性,因此一次可以上传多个文件 //获取选择图片的个数 var files = this.files; var length = files.length; console.log("选择了"+length+"张图片"); //3、回显 $.each(files,function(key,value){ //每次都只会遍历一个图片数据 var p = document.createElement("p"), img = document.createElement("img"); p.className = "pic"; var fr = new FileReader(); fr.onload = function(){ img.src=this.result; p.appendChild(img); document.body.appendChild(p); } fr.readAsDataURL(value); }) }) }) }) </script>
.
<script> $(document).ready(function(){ //为外面的盒子绑定一个点击事件 $("#uploadImgBtn").click(function(){ /* 1、先获取input标签 2、给input标签绑定change事件 3、把图片回显 */ // 1、先回去input标签 var $input = $("#file"); console.log($input) // 2、给input标签绑定change事件 $input.on("change" , function(){ console.log(this) //补充说明:因为我们给input标签设置multiple属性,因此一次可以上传多个文件 //获取选择图片的个数 var files = this.files; var length = files.length; console.log("选择了"+length+"张图片"); //3、回显 $.each(files,function(key,value){ //每次都只会遍历一个图片数据 var p = document.createElement("p"), img = document.createElement("img"); p.className = "pic"; var fr = new FileReader(); fr.onload = function(){ img.src=this.result; p.appendChild(img); document.body.appendChild(p); } fr.readAsDataURL(value); }) }) //4、我们把当前input标签的id属性remove $input.removeAttr("id"); //我们做个标记,再class中再添加一个类名就叫test var newInput = '<input class="uploadImg test" type="file" name="file" multiple id="file">'; $(this).append($(newInput)); }) }) </script>
Comment utiliser Vue pour créer Amap et créer une application de bus en temps réel
Comment utiliser seajs dans l'accord d'écriture requis
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!