【发布时间】:2014-02-04 17:14:24
【问题描述】:
我正在尝试编写一个简单的应用程序以尝试了解 HTML5 的 localStorage。我(以为我)已经成功创建了一个表单来获取数据并将其存储在 localStorage 中(使用 JSON.stringify),然后将其显示在页面上(在 JSON.parse 之后)。然后,我继续讨论如何删除特定项目,并意识到我认为我存储数据不正确,因为我只有 1 个键值对,而我认为每个条目都应该有一个。所以调用 localStorage.removeItem(key) 只是删除了我所有的数据。我需要帮助整理如何单独存储每个条目,以便可以一个一个地删除它们。
html:
<form id="sme-submission" name="sme-submission">
<ul class="no-list-style">
<li>
<h2>Add an SME</h2>
</li>
<li>
<label for="firstname">First Name:</label><br />
<input type="text" id="firstname"/>
</li>
<li>
<label for="lastname">Last Name:</label><br />
<input type="text" id="lastname"/>
</li>
<li>
<label for="email">Email:</label><br />
<input type="email" id="email"/>
</li>
<li>
<label for="subject">Subject:</label><br />
<input type="text" id="subject"/>
</li>
<li>
<input type="submit" value="Save" id="btnSave" class="btn btn-success"/>
</li>
</ul>
</form>
<div id="list-display">
</div>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
JS:
var rolodex = localStorage.getItem('rolodex'); //load stored data if there is any
window.onload = function() {
rolodex = JSON.parse(rolodex);
if(rolodex === null) { //if no data, initialize an empty array
rolodex = [];
} else {
console.log(rolodex);
}
var btnSave = document.getElementById('btnSave');
btnSave.addEventListener('click', Add, false);
List();
};
var Add = function() {
var SME = JSON.stringify({
firstname:document.getElementById('firstname').value,
lastname:document.getElementById('lastname').value,
email:document.getElementById('email').value,
subject:document.getElementById('subject').value,
});
rolodex.push(SME);
localStorage.setItem('rolodex', JSON.stringify(rolodex));
for (var key in SME) {
var person = JSON.parse(SME[key]);
var div = document.getElementById('list-display').lastChild;
div.innerHTML = div.innerHTML + "<div class='sme-entry'><ul class='no-list- style'><li><h3>"+person.subject+"<h3></li><li>"+person.firstname+" "+person.lastname+"</li><li>"+person.email+"</li></ul></div>";
}
alert("Saved");
};
var List = function() {
for (var key in rolodex) {
var person = JSON.parse(rolodex[key]);
var div = document.getElementById('list-display');
div.innerHTML = div.innerHTML + "<div class='sme-entry'><ul class='no-list-style'><li><h3>"+person.subject+"</h3></li><li>"+person.firstname+" "+person.lastname+"</li><li>"+person.email+"</li></ul></div>";
}
};
var Remove = function() {
};
【问题讨论】:
标签: javascript json html local-storage