Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多次读取单个文件的HTML/Javascript_Javascript_Html_Input_Filereader - Fatal编程技术网

多次读取单个文件的HTML/Javascript

多次读取单个文件的HTML/Javascript,javascript,html,input,filereader,Javascript,Html,Input,Filereader,我试图理解Javascript中的文件I/O,这让我感到困惑。我有一个文件输入,它从磁盘加载一个文件,然后我使用一个读卡器来获取内容。但当我重复这个过程时,文件将不会再读取第二次或第三次。 代码如下: window.onload=函数(){ var input=document.getElementById(“myFile”); var output=document.getElementById(“输出”); addEventListener(“change”,function()){ i

我试图理解Javascript中的文件I/O,这让我感到困惑。我有一个文件输入,它从磁盘加载一个文件,然后我使用一个读卡器来获取内容。但当我重复这个过程时,文件将不会再读取第二次或第三次。 代码如下:


window.onload=函数(){
var input=document.getElementById(“myFile”);
var output=document.getElementById(“输出”);
addEventListener(“change”,function()){
if(this.files&&this.files[0]){
var myFile=this.files[0];
var reader=new FileReader();
reader.addEventListener('load',函数(e){
console.log(如target.result);
});
reader.readAsText(myFile);
}
});
}

如果选择相同的文件,则不会为输入触发更改事件。(我想比较的是所选的文件名,没有什么比大小或任何“智能”更好的东西了)


您可以在文件浏览器打开之前尝试清除选择,因此即使选择相同的文件也会导致“新”选择

如何才能清除选择?我尝试过这个方法,但似乎不起作用:如果(file.value){file.value='';}只需将值设置为''或undefined就可以了。。你确定它不能正常工作吗?啊,我做错了。我向标记添加了一个id,然后使用document.getelementbyid.value=“”;这就成功了。非常感谢。尝试将事件类型从“更改”更改为“输入”。顺便说一句,你用的是什么浏览器?谢谢你的建议!我确实得到了下面的答案,但我使用的是chrome。我看到的每个例子都使用了change,所以我甚至不确定回调到底做了什么。我想它会检查名字的变化?但我也会将其更改为输入。我认为这更方便。是的,它可以比较你已经拥有的和你选择的,如果不同,那么触发事件。但是,任何选择都会(或应该)触发较新的(即IE中不支持的)“输入”事件。