Проблема с выводом информации из js в html-таблицу
Здесь я получаю данные из питона и кладу их в локальное хранилище
async function results() {
let a = await eel.get_data()();
console.log(a);
let i = 0;
while (a.length > i) {
localStorage.setItem(i, a[i]);
let k = localStorage.getItem(i, a[i]);
console.log(k);
i++;
}
}
здесь я пытаюсь получить информацию из локального хранилища
var arr = new Array();
localData = localStorage;
function getData(){
var str = localStorage.getItem("localData");
if (str != null) {
arr = JSON.parse(str);
}
return arr;
}
затем я хочу отобразить эту информацию в таблицу html
function showData(){
getData();
var tbl = document.getElementById("table");
for(i = 0; i<arr.length; i++) {
var r = tbl.insertRow();
var cell1 = r.insertCell();
var cell2 = r.insertCell();
var cell3 = r.insertCell();
var cell4 = r.insertCell();
var cell5 = r.insertCell();
cell1.innerHTML = arr[i].id;
cell2.innerHTML = arr[i].rasp;
cell3.innerHTML = arr[i].name;
cell4.innerHTML = arr[i].sn;
cell5.innerHTML = arr[i].inv;
}
}
showData();
Но после всего этого, браузер выдает ошибку
**Возникло исключение: TypeError: Cannot read properties of undefined (reading 'length')
at showData**
for(i = 0; i<arr.length; i++)
Получается у меня переменная arr пустая? Как можно это исправить? Помогите пожалуйста((
Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
async function results() {
let a = await eel.get_data()();
localStorage.setItem("localData", JSON.stringify(a));
var mytable = JSON.parse(localStorage.getItem('localData'));
console.log('Данные из локального хранилища:', mytable);
}
var arr = new Array();
function getData(){
var str = localStorage.getItem('localData');
if (str != null) {
arr = JSON.parse(str);
}
}
function showData(){
results();
getData();
const [id, rasp, name, sn, inv] = [0, 1, 2, 3, 4]
var tbl = document.getElementById('table');
for(i = 0; i<arr.length; i++) {
var r = tbl.insertRow();
var cell1 = r.insertCell();
var cell2 = r.insertCell();
var cell3 = r.insertCell();
var cell4 = r.insertCell();
var cell5 = r.insertCell();
cell1.innerHTML = arr[i][id];
cell2.innerHTML = arr[i][rasp];
cell3.innerHTML = arr[i][name];
cell4.innerHTML = arr[i][sn];
cell5.innerHTML = arr[i][inv];
}
}