js清空input file的值

js清空input file的值今天在做选择本地图片上传的功能时遇到一个问题,第一次选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,这个过程没有问题,问题出在当把创建的img元素节点删除后,再点file控件选中同一个文件后发现图片并没有被重新创建出来。分析了原因,是因为上一次file里选择的文件路径值与本次选择的文件路径值是一样的,值没有改变所以导致file不会触发onchange事件。解

大家好,又见面了,我是你们的朋友全栈君。

在做选择本地图片上传的功能时遇到一个问题,第一次点file按钮选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,但把创建的img元素节点删除后,再点file按钮选择同一个文件后发现图片并没有被重新创建出来。

分析了原因:因为上一次选择的文件与本次选择的是同一个文件,两次的路径值相同,值没有改变所以导致file不会触发onchange事件,因此需要每次创建完img后重置file的value或者重置file的dom来解决这个问题。

方案一

每次创建完img后把file的value值重置为空字符串(设其它值会报错)

提示:浏览器的安全机制不允许直接用js修改file的value为空字符串以外的值,强制修改会报以下错误:
VM4061:1 Uncaught DOMException: Failed to set the ‘value’ property on ‘HTMLInputElement’: This input element accepts a filename, which may only be programmatically set to the empty string.

var file = document.getElementById('file');
file.value = ''; //file的value值只能设置为空字符串

方案二

每次创建完img后把file的outerHTML重置

var file = document.getElementById('file');
file.outerHTML = file.outerHTML; //重置了file的outerHTML
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131702.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月11日 下午11:36
下一篇 2022年6月11日 下午11:36


相关推荐

  • mysql截取字符串并更新_mysql 截取字符串并 update select

    mysql截取字符串并更新_mysql 截取字符串并 update select亲测有效格式为update需要修改的表b1innerjoin(查询到的临时表)b2onb1.id=b2.idsetb1.要修改的字段=b2.查询到的值因为想要把表中的一个字段的一部分取出来,另放一个新的字段里面,所以想到了mysql的字符串截取功能。需要更新的数据:selectparams,substring_index(params,’=’,-1),paramI…

    2022年6月11日
    120
  • linux中的manifest的作用,Manifest用途

    linux中的manifest的作用,Manifest用途关于让自己的程序界面实现 XP 风格这个问题 在网上的讨论很多 大多数的作法都是写一个 manifest 文件 然后将文件名改一下 比如 exe 文件为 test exe 就将这个 manifest 文件改名成 test exe manifest 并将其和 test exe 放在同一个目录里 这样 test exe 在 XP 或 2003 必须启动 Themes 服务 下运行时就会呈现 XP 界面风格 那么这个方法为什么有效和怎么将

    2026年3月17日
    3
  • leetcode题目分类_leetcode组合总和

    leetcode题目分类_leetcode组合总和原题链接编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,”flow”,”flight”]输出:”fl”示例 2:输入:strs = [“dog”,”racecar”,”car”]输出:””解释:输入不存在公共前缀。 提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成题解分

    2022年8月8日
    11
  • vsc怎么创建html文件_用vscode写一个html页面

    vsc怎么创建html文件_用vscode写一个html页面1.新建一个文件2.右下角点击纯文本3.选择想要创建的响应的文件,此处输入html4.然后输入!按tab就行了

    2022年8月21日
    22
  • 三道计算时间复杂度的题目

    三道计算时间复杂度的题目出处 算法第四版 EditionSedge 著 问题 1 4 7 三道小题初看觉得很简单 但是仔细一分析 a b 小题里面的内循环操作次数是和外层的 n i 值有关 并不是简单的操作 N 次 很久没有算过时间复杂度了 稍微感到有点棘手 publicstatic intN intsum 0 for intn N n gt 0 n 2 for inti 0 i lt

    2026年3月16日
    2
  • CSS 设置文字只显示一行,多余显示省略号

    CSS 设置文字只显示一行,多余显示省略号CSS 设置文字只显示一行 多余显示省略号 view text 思路 1 设置 inline block 属相 2 强制不换行 3 固定高度 4 隐藏超出部分 5 显示 display inline block white space nowrap width 100 ov

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号