提问人:Mwewol 提问时间:11/16/2023 最后编辑:Mwewol 更新时间:11/17/2023 访问量:41
将局部作用域变量移动到全局作用域,以便我可以将其导入另一个 JS 文件
Moving a local scoped variable to global scope so I can import it to another JS file
问:
我试图在 javascript 中将 excel 工作表转换为 json 对象,并且在检索最终数据时遇到问题,因为它是在本地确定的。我想将标记为“inputData”的变量导出到另一个 JS 文件,但为了做到这一点,它必须位于文件的顶层,我认为这意味着它必须是全局范围。不过,我一辈子都无法弄清楚如何从其本地范围内获取它。任何帮助将不胜感激。
看一下代码:
let selectedFile;
document.getElementById('input').addEventListener('change', (event) => {
selectedFile = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {
if (selectedFile) {
let fileReader = new FileReader();
fileReader.readAsBinaryString(selectedFile);
fileReader.onload = (event) => {
let data = event.target.result;
let workbook = XLSX.read(data, { type: "binary" })
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
let newData = rowObject.filter((item, index) => {
return index === rowObject.findIndex((obj) => {
return JSON.stringify(item) === JSON.stringify(obj)
})
})
newData.pop()
let inputData = JSON.stringify(newData, undefined, 4)
console.log(inputData)
}
}
})
答:
-1赞
Viktor Luft
11/16/2023
#1
您可以改为导出可变对象作为引用:
let selectedFile;
export const MyExport = { inputData: undefined };
document.getElementById('input').addEventListener('change', (event) => {
selectedFile = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {
if (selectedFile) {
let fileReader = new FileReader();
fileReader.readAsBinaryString(selectedFile);
fileReader.onload = (event) => {
let data = event.target.result;
let workbook = XLSX.read(data, { type: "binary" })
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
let newData = rowObject.filter((item, index) => {
return index === rowObject.findIndex((obj) => {
return JSON.stringify(item) === JSON.stringify(obj)
})
})
newData.pop()
MyExport.inputData = JSON.stringify(newData, undefined, 4)
console.log(inputData)
}
}
})
评论
0赞
Mwewol
11/16/2023
这是否允许我在另一个 JS 文件中的 inputData 变量中使用我的数据?我需要的主要内容是在 onload 事件处理程序中本地范围的数据
0赞
Bergi
11/16/2023
OP问的不是关于inputData
selectedFile
0赞
Viktor Luft
11/17/2023
我已经更新了我的答案。你当然可以随心所欲地命名。MyExport
评论
inputData
selectedFile
let
inputData
onload