<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">这个的onchange事件为什么不能传相同名称但内容不同的文件,因为浏览器缓存的问题,例如使用一个隐藏的input元素来实现文件选择操作具体例子
时间: 2023-07-06 08:38:34 浏览: 75
如何将input type=file显示的浏览变成英文的
5星 · 资源好评率100%
可以使用一个隐藏的input元素来实现文件选择操作,这样可以避免浏览器缓存的问题,具体的代码如下:
```html
<button onclick="selectFile()" style="margin-left:9px">选择文件</button>
<input type="file" id="excel-file" style="display:none">
<script>
function selectFile() {
// 触发选择文件的点击事件
document.getElementById('excel-file').click();
}
document.getElementById('excel-file').addEventListener('change', function() {
// 处理文件内容
var file = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
console.log(contents);
};
reader.readAsText(file);
});
</script>
```
在这个例子中,使用一个按钮来触发选择文件的点击事件,点击按钮时会触发input元素的点击事件,从而弹出文件选择框。当选择文件后,会触发input元素的change事件,从而调用处理文件内容的函数。这样就可以避免相同名称但内容不同的文件不触发onchange事件的问题。
阅读全文