<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">这个的onchange事件不能传相同名称但内容不同的文件会不触发该事件,因为浏览器缓存的问题,例如在每次选择文件时都更改input元素的value属性具体例子
时间: 2023-07-06 12:38:34 浏览: 84
没问题,以下是一个具体例子:
```html
<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">
<script>
function readExcel(input) {
// 清空input元素的value属性
input.value = '';
// 设置新的文件名
input.value = 'new_file.xlsx';
// 处理文件内容
var file = input.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
console.log(contents);
};
reader.readAsText(file);
}
</script>
```
在每次选择文件时,先将input元素的value属性置为空,然后再设置新的文件名,这样即使选择了相同名称但内容不同的文件,也能正确触发onchange事件,从而实现文件内容的处理。在这个例子中,使用了FileReader来读取文件内容,这是一种常用的方法。
相关问题
<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">做一个清空文件的小按钮
好的,以下是清空文件的小按钮的HTML代码:
```html
<button onclick="clearFile()">清空文件</button>
```
同时需要在JavaScript中添加以下代码,实现清空文件的功能:
```javascript
function clearFile() {
document.getElementById('excel-file').value = "";
}
```
这样,当用户点击清空文件按钮时,文件输入框的值就会被清空,达到清空文件的效果。
<input type="file" id="excel-file" onchange="readExcel(this)" style="margin-left:9px">这个的onchange事件不能传相同名字的文件夹怎么办
你可以在onchange事件中添加一个判断,判断文件的名称是否和之前选择的文件名称相同,如果相同则提示用户重新选择一个文件。以下是一个示例代码:
```javascript
let previousFileName = "";
function readExcel(input) {
let file = input.files[0];
if (file.name === previousFileName) {
alert("请不要选择相同的文件");
input.value = "";
return;
}
// 其他的文件读取操作
previousFileName = file.name;
}
```
在这个示例代码中,我们定义了一个`previousFileName`变量来存储上一次选择的文件名。当用户选择一个新文件时,我们将新文件的名称与`previousFileName`进行比较,如果相同则弹出一个提示框,要求用户重新选择一个文件,并将输入框的值清空。如果不相同,则进行其他的文件读取操作。
阅读全文