У меня есть форма расходов, которая сохраняет данные в локальном хранилище браузера.У меня есть кнопка на странице под формой, так что после ее заполнения вы можете нажать, чтобы распечатать данные в хорошем формате.
Я должен использовать данные JSON в локальном хранилище из-зак функциональности моего приложения.
Я использую переменную js, чтобы получить данные из локального хранилища:
var my_expenses = localStorage.getItem('my_expenses');
Вот запись в локальном хранилище моего браузера с неизмененным значением.
Ключ: my_expenses Значение:
{
"income": {
"1": {
"name": "Pay (after tax)",
"freq": "26",
"value": "233"
},
"2": {
"name": "Partners take home pay",
"freq": "4",
"value": "10"
},
"3": {
"name": "Bonuses/overtime",
"freq": "26",
"value": "30"
},
"4": {
"name": "Income from savings and investments",
"freq": "1",
"value": "50"
},
"5": {
"name": "Child support received ",
"freq": "12",
"value": "40"
}
},
"outgoings": {
"1": {
"name": "Electricity",
"freq": "4",
"value": "0"
},
"2": {
"name": "Gas",
"freq": "4",
"value": "0"
},
"3": {
"name": "Water",
"freq": "4",
"value": "0"
},
"4": {
"name": "Internet",
"freq": "4",
"value": "0"
},
"5": {
"name": "Telephone",
"freq": "4",
"value": "0"
},
"6": {
"name": "Car Insurance",
"freq": "1",
"value": "0"
}
}
}
Согласно Print.js вы можете печатать данные JSON следующим образом (включая мою переменную с данными локального хранилища):
<button type="button" onclick="printJS({printable: my_expenses, properties: ['name', 'freq', 'value'], type: 'json'})">
Print JSON Data
По какой-то причине я получаю сообщение об ошибке в своей консоли и не могу ее выяснить, и диалог печати не открывается.
Uncaught Error: Missing printable information.
at init (print.min.js:1)
at HTMLButtonElement.onclick ((index):156)
Я думаю, что это может быть структурамой JSON в локальном хранилище?любая помощь будет принята с благодарностью.
Попробовал использовать JSON.parse () примерно так:
var my_expenses = JSON.parse(localStorage.getItem("my_expenses"));
до того, как я добавил анализ JSON.Я получал сообщение об ошибке, и это был вывод локального хранилища в консоли.
![before JSON parse](https://i.stack.imgur.com/aMUnP.png)
после того, как я его добавил, это был вывод и печатьКнопка вроде бы работала:
![with JSON parse](https://i.stack.imgur.com/WLvnI.png)
Но в диалоге печати нет данных?
![enter image description here](https://i.stack.imgur.com/pMS9N.png)
Как создается объект и функции локального хранилища:
//Set the default incomes and outgoings here
var defaultsObj = {
'income':{
1:{name:"Pay (after tax)",freq:52,value:0},
2:{name:"Partners take home pay",freq:4,value:0},
3:{name:"Bonuses/overtime",freq:26,value:0},
4:{name:"Income from savings and investments",freq:1,value:0},
5:{name:"Child support received ",freq:12,value:0}
},'outgoings':{
1:{name:"Electricity",freq:4,value:0},
2:{name:"Gas",freq:4,value:0},
3:{name:"Water",freq:4,value:0},
4:{name:"Internet",freq:4,value:0},
5:{name:"Telephone",freq:4,value:0},
6:{name:"Car Insurance",freq:1,value:0}
}
};
//Functions to store and retrieve objects from localstorage
function ls_store(name,o){
localStorage.setItem(name, JSON.stringify(o));
};
function ls_read(name){
return JSON.parse(localStorage.getItem(name));
};
function set_defaults(){
ls_store('my_expenses',defaultsObj);
expensesObj = ls_read('my_expenses');
}
//If our localstroage items are empty let's store the defaults
if(ls_read('my_expenses')==null){
set_defaults();
}