JavaScript动态实现文件上传列表功能

作者:窗边听雨时间:2026-10-22 18:26:47浏览:401

本文介绍如何使用JavaScript动态生成文件上传表单。通过点击按钮添加包含文件选择框和删除按钮的div区域,点击删除移除对应行。当所有上传项移除时,提交按钮自动隐藏,实现灵活的动态文件添加与删除功能。

动态文件上传功能概述

在发送邮件等场景中,通常需要附加文件。为了提升用户体验,每添加一个文件,页面应动态显示对应的文件上传表单选项。

动态文件上传功能概述

功能逻辑与交互流程

该功能的具体逻辑为:初始状态下仅显示一个“添加”按钮。点击该按钮后,页面会增加一个包含文件选择框和删除操作的区域,同时显示“上传”按钮。若点击删除按钮,对应的文件选择行将消失;当所有文件选择项均被移除时,“上传”按钮会自动隐藏。以下是具体实现代码:

动态添加文件区域实现


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 
 <title>动态添加文件上传列表</title>
 <script type="text/javascript">
  var num=0;
  function addFile(event){
  //创建一个div标签,用以包含一个input标签和删除按钮
  var innerdiv = document.createElement("div");
  
  //创建一个input标签
  var inputNode = document.createElement("input");
  inputNode.name = "fileName";
  inputNode.type="file";
  
  //创建一个删除按钮
  var delNode = document.createElement("input");
  delNode.name = "del";
  delNode.type = "button";
  delNode.value="删除";
  
  var submit = document.getElementById("submit");
  
  //删除当前删除按钮所在的标签,为此按钮点击事件创建一个处理函数
  delNode.onclick = function d(){
  this.parentNode.parentNode.removeChild(this.parentNode); //删除此div区域
  var fileNodes = document.getElementsByName("fileName");
  //当没有上传文件时,隐藏submit按钮
  if(fileNodes.length==0){
  submit.style.display="none";
  }
  };
  
  innerdiv.appendChild(inputNode);
  innerdiv.appendChild(delNode);
  
  var div = document.getElementById("file");
  div.appendChild(innerdiv);
  
  submit.style.display="block";
  
  }
 </script>
 
 </head>
 
 <body>
 <form id="upload" action="${pageContext.request.contextPath }/servlet/FileUploadServlet" enctype="multipart/form-data" method="post">
  上传文件:<input type="button" value="添加文件" onclick="addFile(this.parentNode)"/> <br />
  <table>
  <div id="file">
  
  </div>
  </table>
  <input id="submit" type="submit" value="上传" style="display: none"/>
 </form>
 </body>
</html>

在示例代码中,`addFile` 函数负责动态生成一个 `div` 区域。该 `div` 内部包含一个 `file` 类型的 `input` 标签以及一个用于删除该行的按钮。

动态创建Input标签示例

以下是动态创建 `input` 标签的代码示例:


//创建一个div标签,用以包含一个input标签和删除按钮
 var innerdiv = document.createElement("div");
  
//创建一个input标签
 var inputNode = document.createElement("input");
 inputNode.name = "fileName";
 inputNode.type="file";
 innerdiv.appendChild(inputNode);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章