[英]assigning json object to a global array
我已经阅读了有关此主题的论坛,但没有一个解决我的问题。 我有一个由 XLSX 读取的 Excel 文件。 然后我有数组“objectArray”,它是全局数组。 由“Json.stringfy(row)”函数创建的 Json 对象应该返回一个 JSON 对象。 现在我想将这些对象存储在“objectArray”中,以便对文件中的其他函数可见。 然而,全局数组“objectArray”仍然是空的。 我应该如何克服它? 我尝试使用回调(objectArray)。 但控制台说这不是一个函数!
这是 HTML 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<title>GemeSys</title>
<link rel="stylesheet" href="./styles.css">
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.3/xlsx.min.js"
integrity="sha512-JiRzqZPYxjedpFqoYdKBcsKiBUfsmRZTyjuGlumbyJt4WJfWBZNqIizmbNgPN19VFtg3NYywvNk9lkt4KXVhiA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style type="text/css">
.directions li span.arrow {
display: inline-block;
min-width: 28px;
min-height: 28px;
background-position: 0px;
background-image: url("https://heremaps.github.io/maps-api-for-javascript-examples/map-with-route-from-a-to-b/img/arrows.png");
position: relative;
top: 8px;
}
.directions li span.depart {
background-position:-28px;
}
.directions li span.rightturn {
background-position:-224px;
}
.directions li span.leftturn{
background-position:-252px;
}
.directions li span.arrive {
background-position:-1288px;
}
</style>
</head>
<!-- ******************************************************************************************************-->
<body id="markers-on-the-map">
<div class="controls">
<form action="" id="form_1">
<label for="File" > Choose File: </label>
<input type="file" accept=".xlsx, .xls, .csv" id="File_1" />
<br>
<br>
<label for="Order-ID">Order-ID: </label>
<input type="text" , id ="Order-ID">
<button id="show_route" > Show the Route</button>
<Button id="show_all_routes">Show All Routes</Button>
<Button id="Download"> Download Results</Button>
</form>
</div>
<div id="map"></div>
<div id="panel"></div>
<script async src="preprocecing.js" defer="defer"></script>
</body>
</html>
这是包含函数的 Preprocesing.js 文件。
//const xlsxFile = require('read-excel-file/node');
var file_input = document.getElementById("File_1");
var Order_text = document.getElementById("Order_ID");
var Sroute1 = document.getElementById("show_route");
var SrouteAll = document.getElementById("show_all_routes");
var download = document.getElementById("Download");
var map = document.getElementById("map");
var panel = document.getElementById("panel");
let selectedFile;
const objectArray=[] ;
if (file_input) {
file_input.addEventListener("change", function (event,objectArray) {
selectedFile = event.target.files[0];
if (selectedFile) {
let filereader = new FileReader();
filereader.readAsBinaryString(selectedFile);
filereader.onload = (event) => {
//console.log(event.target.result);
let data = event.target.result;
let workbook = XLSX.read(data, { type: "binary" });
//console.log(workbook);
workbook.SheetNames.forEach(sheet => {
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheet]);
rowObject.forEach(row => { objectArray.push(JSON.stringify(row)); });
// callback(objectArray);
});
}
}
});
}
console.log(objectArray[1]);
这是控制台中的错误
Uncaught TypeError: Cannot read properties of undefined (reading 'push')
at preprocecing.js:30
at Array.forEach (<anonymous>)
at preprocecing.js:30
at Array.forEach (<anonymous>)
at FileReader.filereader.onload (preprocecing.js:28)
提前致谢。
更改处理程序回调只有一个参数: event
。 你有 2。
file_input.addEventListener("change", function (event,objectArray)
JS 从这个地方获取objectArray
,而不是从你定义这个的地方( const objectArray=[] ;
)。 这就是为什么您会收到有关读取未定义属性的错误的原因。 尝试删除第二个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.