gpt4 book ai didi

javascript - 无法在 addEventListener 调用的函数内调用函数

转载 作者:行者123 更新时间:2023-12-03 04:54:36 25 4
gpt4 key购买 nike

基本上,我希望能够从 .csv 文件加载配置并使用它来设置 HTML 页面。经过一番挖掘,我找到了 FileReader 和 AddEventListener 的通用解决方案。我的 HTML 看起来像这样:

<html>
<head>
<script src="kernel.js"></script>
<script>
var k = new kernel();
</script>
</head>

<body>

<input type="file" id="file-input" />
<script>
document.getElementById('file-input').addEventListener('change', k.loadConfig, false);
</script>

<!-- Tables and stuff that i want to modify -->

</body>
</html>

内核.js:

function kernel() {

var self = this;
this.config = null;

this.readSingleFile = function(e) {

var file = e.target.files[0];
if (!file) return null;

var reader = new FileReader();
reader.onload = function(e) { self.config = e.target.result; };
reader.readAsText(file);

}

this.loadConfig = function(e) {

self.readSingleFile(e);
console.log(self.config);

// Do more stuff

}

}

如果我没记错的话,console.log() 应该显示文件的内容。但它却显示为空,我陷入了困境。

如果有人可以帮助我,甚至引导我走向正确的方向,我将非常感激。

问候,多姆。

最佳答案

您正在失去执行上下文。您可以通过使用 Function.prototype.bindkernel.loadConfig 函数显式绑定(bind)到 kernel 对象来修复它。 :

document.getElementById('file-input')
.addEventListener('change', kernel.loadConfig.bind(kernel), false);

使用匿名函数作为事件处理程序也可以:

document.getElementById('file-input')
.addEventListener('change', function() {
kernel.loadConfig();
}, false);

关于javascript - 无法在 addEventListener 调用的函数内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com