Javascript FileReader如何访问reader.onload?

Javascript FileReader如何访问reader.onload?,javascript,filereader,Javascript,Filereader,我目前正在学习Javascript。我正在用FileReader开发一个程序 如何访问变量性能的变量文件 我的代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="style/style.css"> <title>FileReader</title> </he

我目前正在学习Javascript。我正在用FileReader开发一个程序

如何访问变量
性能的变量
文件

我的代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style/style.css">
<title>FileReader</title>
</head>
<body>
<h1>FileReader</h1>
<input type='file' accept='text/plain' onchange='openFile(event)'><br>
Input: <input type="text" id="qi" value="">
<br></br>
<button onclick="check()" class="button buttonB">Check</button>
<p id="ans"></p>
<p id=".same"></p>
<script src="main.js"></script>
</body>
</html>



function check(){
  var text = document.getElementById("qi").value;
  console.log(`Text: ${text}`);

  var perf;       //The value should be `file`

  if (text === perf){
      console.log("Same");
      document.getElementById(".same").innerHTML = "Same";
  } else{
      console.log("Not Same!!!")
      document.getElementById(".same").innerHTML = "Not Same!!!";
  }
}

function openFile(event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function(){
var file = reader.result;
console.log(file);
document.getElementById("ans").innerHTML = file;
};
reader.readAsText(input.files[0]);
};

字符流
字符流

输入:

检查

函数检查(){ var text=document.getElementById(“qi”).value; log(`Text:${Text}`); var perf;//值应为`file` 如果(文本===性能){ 控制台日志(“相同”); document.getElementById(“.same”).innerHTML=“same”; }否则{ console.log(“不一样!!!”) document.getElementById(“.same”).innerHTML=“不一样!!!”; } } 函数openFile(事件){ var输入=event.target; var reader=new FileReader(); reader.onload=函数(){ var file=reader.result; console.log(文件); document.getElementById(“ans”).innerHTML=file; }; reader.readAsText(input.files[0]); };
方法1:比较保存的innerHTML
方法2:将变量保存在全局范围中 只需在全局范围内保存变量
文件

替换

var file = reader.result;


没问题。你需要更具体地回答你的问题。我发现你的代码有一些问题。在第4行中声明
perf
,然后在第5行中检查它是否与
text
变量相同,但
perf
未定义-您从未初始化过它,因此
else
条件将不会发生。那么这部分
document.getElementById(“.same”)
-->
.same
?它真的是你放在元素上的id还是类?如果是类,则应使用
document.querySelector(“.same”)
;另一件事是,您的大部分代码都在
check()
openFile()
函数中,但您从不执行它们。这些函数由按钮调用。Html代码:
FileReader FileReader
输入:

检查

事实上我的副本是错误的,对不起。这里有一个简单的闭包问题:您需要在两个函数共享的作用域中声明
file
perf
或第三个变量(这里是全局作用域),以便您可以在一个func中设置它,然后在另一个func中获取它(
var shared;function check(){…var perf=shared;…}function openFile(){…shared=reader.result;..}
)如果您只是粘贴完整的代码而不是逐行粘贴,那么会更容易。@codeepic可能更难看到发生了什么变化。@blue112谢谢这是一个非常有用的答案
var file = reader.result;
window.file = reader.result;
if (text === perf){
if (text === window.file){