EDIT: dopo alcuni commenti, mi rendo conto che ho bisogno di prefisso i miei tasti JSON meglio. Sto aggiungendo una taglia perché imparare questo è importante per me.Funzione caricamento JSON legge chiavi da altri programmi
Sto creando un modulo e lo salvi in JSON. Quindi ho creato una funzione per visualizzare i dati del modulo su una tabella sottostante. Il problema è che quando la pagina si carica, carica i dati da un altro programma che ho creato con una chiave diversa. Infatti, carica tutte le chiavi nell'archivio locale da qualsiasi cosa. Visualizzerà i dati corretti, ma i dati errati vengono visualizzati come non definiti.
Questa è la funzione che chiama i dati.
getData: function() {
var ORMcount = localStorage.length, i = 0;
if (ORMcount > 0) {
var renderData = "<table>";
renderData += "<tr><td>ORM Matrix</td></tr><br /><tr><th>Plan</th><th>Reward</th><th>Risks</th><th></th></tr>";
for (i = 0; i < ORMcount; i += 1) {
var key = localStorage.key(i); //Get Key
var ORM = localStorage.getItem(key); //Get Data
try{
var data = JSON.parse(ORM); //Parse Data
}
catch(err) {
continue;
}
renderData += "<td>"+ data.Plan + "</td>";
renderData += "<td>" + data.Reward + "</td>";
renderData += "<td>" + data.Risk + "</td>";
renderData += "<td class='xData' data-id='xData' data-index='"+key+"'>" + "x" + "</td></tr>";
//set a data-id and data-index to this element, we need them to select the correct information.
renderData += "<tr><td> </td></tr>"
}
renderData += "</table>";
dvcontainer.innerHTML = renderData;
Array.prototype.map.call(document.querySelectorAll("td[data-id='xData']"), function(element){
element.addEventListener("click", deleteRow, false); //attach a click handler to all delete buttons
});
}
}
Se qualcuno mi può aiutare in quello che sto facendo male lo apprezzerei molto.
Stai dicendo che hai scritto due cose diverse che sono servite dallo stesso dominio che usano entrambi 'localStorage'? Stanno andando in conflitto - 'localStorage' è definito in modo che tutto sulla stessa origine può leggere/scrivere su di esso. Se hai intenzione di farlo, probabilmente dovrai usare una convenzione per il prefisso di tutte le tue chiavi o simili. Quindi assicurati di non chiamare mai 'localStorage.clear()' ma invece di implementare il tuo metodo per eliminare le chiavi rilevanti ecc. Ecc. –
la mia soluzione per non cancellare tutto era eliminare le righe. Ora, come faccio a prefisso le chiavi? – MrEhawk82
oh, ho dimenticato di menzionare, questo particolare programma non è ospitato su nessun dominio. L'altro è, ma non sta chiamando dalla versione online. Chiama solo le chiavi dal programma sul mio PC. è strano. Mi chiedo se lo ospito sul mio dominio, sarà in conflitto con l'altro programma sul mio dominio ... – MrEhawk82