大家好,又见面了,我是你们的朋友全栈君。
在做选择本地图片上传的功能时遇到一个问题,第一次点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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131702.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...