js清空input file的值
阿新 • • 發佈:2020-09-01
在做選擇本地圖片上傳的功能時遇到一個問題,第一次點file按鈕選擇圖片完成會觸發onchange事件,獲取檔案後動態在介面上建立img標籤展示,但把建立的img元素節點刪除後,再點file按鈕選擇同一個檔案後發現圖片並沒有被重新創建出來。
分析了原因:
因為上一次選擇的檔案與本次選擇的是同一個檔案,兩次的路徑值相同,值沒有改變所以導致file不會觸發onchange事件,因此需要每次建立完img後重置file的value或者重置file的dom來解決這個問題。
解決方法一:
每次建立完img後把file的value值重置為空字串
var file = document.getElementById('file'); file.value= ''; //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.
解決方法二:
每次建立完img後把file的outerHTML重置 (我自己實驗這種方法並不奏效)
var file = document.getElementById('file');
file.outerHTML = file.outerHTML; //重置了file的outerHTML