2013-10-28 3 views
4

좋아요, 여기 예제를 따르려고했는데 localstorage의 배열에 객체를 추가하고 덮어 쓰지 않는 몇 가지 방법이있을 수 있습니다.하지만 적어도 찾지 못했습니다. 그들 중 하나.localstorage의 배열에 객체를 추가하십시오.

개체를 배열에 저장하려면이 코드를 가져오고 자체는 덮어 씁니다. 아무도 내가 뭘 놓치고 보여 줄 수 있니? (그리고 나는 많이 놓칠 수 있습니다.)

function addEntry() { 
    var entryTitle = document.getElementById("entryTitle").value; 
    var entryText = document.getElementById("entryText").value; 
    var entry = { 
     "title": entryTitle, 
     "text": entryText 
    }; 
    localStorage.setItem("entry", JSON.stringify(entry)); 
    var allEntries = []; 
    allEntries.push(entry); 
    localStorage.setItem("allEntries", JSON.stringify(allEntries)); 
}; 
+2

그 자체를 덮어 쓰는 것 방금에 뭔가를 밀어 새로운 배열로 로컬 스토리지에 값을 설정하고 있습니다. localStorage에서 현재 저장된 내용을 어디에서 얻고 있습니까? –

+0

"코드를 덮어 쓰는 중"이며 코드로 수행하려는 작업을 설명하십시오. – David

답변

15

setItem을 사용하면 이전에 있던 항목을 덮어 씁니다. 그런 다음 로컬 스토리지에 다시 저장, 이전 목록을 검색 getItem를 사용하여 여기에 추가해야합니다

여기
function addEntry() { 
    // Parse any JSON previously stored in allEntries 
    var existingEntries = JSON.parse(localStorage.getItem("allEntries")); 
    if(existingEntries == null) existingEntries = []; 
    var entryTitle = document.getElementById("entryTitle").value; 
    var entryText = document.getElementById("entryText").value; 
    var entry = { 
     "title": entryTitle, 
     "text": entryText 
    }; 
    localStorage.setItem("entry", JSON.stringify(entry)); 
    // Save allEntries back to local storage 
    existingEntries.push(entry); 
    localStorage.setItem("allEntries", JSON.stringify(existingEntries)); 
}; 

위를 보여주는 fiddle이다.

5

아마 당신은 새로운 일을 추진하기 전에 항목을 가져 오기 위해 필요 : 물론

var allEntries = JSON.parse(localStorage.getItem("allEntries")) || []; 
allEntries.push(entry); 
//etc... 
관련 문제