我花了整整一整天的时间,在Google上搜索并寻找答案,但仍然不知道。
我的代码有点长,可以在Firefox中正常运行,但是从Chrome获得“ Uncaught SyntaxError:Unexpected token u”。
谁能指出我做错了什么?提前致谢!
// when the page loads, list all the current contacts $(document).ready(function(){ // check if localStorage database exists if(!localStorage.getItem("customerDatabase")){ // define a JSON object to hold all current address var contacts = { "users":[ { "id":"1", "name":"dennis", "email":"dennisboys@gmail.com" }, { "id":"2", "name":"zoe", "email":"zoeisfemale@gmail.com" } ] } // end of contacts JSON object // stringify the object var stringObject = JSON.stringify(contacts); // store it into localStorage database var storedDatabase = localStorage.setItem("customerDatabase", stringObject); } else { // list all customers upon page loads listJSONCustomers(); } // list all current contacts from JSON object in localStorage function listJSONCustomers(){ var displayHTML = ""; var i; // get the data from localStorage var storedDatabase = localStorage.getItem("customerDatabase"); // parse the data from string to JSON object var parseObject = JSON.parse(storedDatabase); // access the users key of the JSON object var userObject = parseObject.users; // get the length of the object (how many customers the database has) var contactsLength = userObject.length; for(i=0; i<contactsLength; i++){ var trElement = '<tr id="address' + (i+1) + '">'; var tdId = '<td id="id' + (i+1) + '">' + userObject[i].id + '</td>'; var tdName = '<td id="name' + (i+1) + '">' + userObject[i].name + '</td>'; var tdEmail = '<td id="email' + (i+1) + '">' + userObject[i].email + '</td>'; var tdButton = '<td id="button"><button id="editButton' + userObject[i].id + '">Edit</button> | <button id="deleteButton' + userObject[i].id + '">Delete</button></td>'; displayHTML += trElement + tdId + tdName + tdEmail + tdButton + '</tr>'; } $('#address_list').html(displayHTML); } // add customer to database $('#saveCustomer').click(function(){ if( $('#customerName').val() !== "" && $('#customerEmail').val() !== "" ){ var customerName = $('#customerName').val(); var customerEmail = $('#customerEmail').val(); // get the data from localStorage var storedDatabase = localStorage.getItem("customerDatabase"); // parse the data from string to JSON object var parseObject = JSON.parse(storedDatabase); // access the users key of the JSON object var userObject = parseObject.users; // get the new entry var newCustomerObject = { "id": userObject.length + 1, "name": customerName, "email": customerEmail }; // push the new entry into the object userObject.push(newCustomerObject); // convert the object into string for localStorage var stringObject = JSON.stringify(parseObject); // store the JSON object into localStorage var storedDatabase = localStorage.setItem("customerDatabase", stringObject); // list all customes again every time a database receives a new entry listJSONCustomers(); } else { alert("Please enter customer's name and email."); } }); // end of $('#saveCustomer').click(); });
在某些时候,您确实破坏了该密钥的LocalStorage值。LocalStorage只能存储字符串,因此,如果将其他任何内容传递给它,它将把它转换为字符串。由于您的值为'undefined',这意味着在某个时候,您可能偶然地做了这样的事情:
'undefined'
var value; localStorage.setItem('key', value);
在这种情况下,valueis undefined,不是字符串。保存后,将对其进行转换。不幸的是,"undefined"不是有效的JSON。这意味着,当它尝试解析时,它将引发异常。
value
undefined
"undefined"
要解决您的问题,您应该使用清除不良价值removeItem。
removeItem
localStorage.removeItem("customerDatabase");