2016-11-28 3 views
2

Я сохраняю значения из своего раскрывающегося списка в localstorage, однако я не хочу, чтобы данные были перезаписаны новой информацией, когда в следующий раз пользователь выбирает из выпадающего меню, я просто хочу продолжать добавлять значение для моего локального хранилища без его перезаписи. Любая помощь будет оценена, спасибо.localstorage продолжает перезаписывать мои данные

ЯШ:

function reason(){ 
     var dropd = document.getElementById("savedrop").value; 
     var drophistory = JSON.parse(localStorage.getItem("savedrop")); 
     localStorage.setItem("reason", JSON.stringify(dropd)); 
    } 

HTML:

<select id="savedrop"> 
        <option value="" disabled="disabled" selected="selected">Please choose one</option> 
        <option value="one">1</option> 
        <option value="two">2</option> 
        <option value="three">3</option> 
       </select> 
<input id="btnbutton" class="btn" type="button" onClick="reason()" value="Submit"> 
+0

Что вы имеете в виду, добавив без перезаписи? Является ли это массивом, и вы хотите подтолкнуть к нему новое значение или это число, и вы хотите суммировать его с новым значением? Можете ли вы попытаться объяснить это более четко? –

+0

это массив, я просто хочу, чтобы он добавил значение («один, два или три») в localstorage без перезаписи. Например, если пользователь выбрал «один» в сеансе, то в другом сеансе пользователь выбрал «три», я хочу, чтобы данные в localstorage отображали «[один три]» и т. Д. – michelle9090

ответ

3

В localStorage данные сохраняются в ключевых пар значений строк. Каждый раз, когда вы вызываете setItem(), он будет добавлять или перезаписывать существующее значение. И getItem() просто извлекает значение, хранящееся в localStorage, которое является строковым значением. Чтобы решить эту проблему, вы должны использовать массив, stringify, а затем сохранить его. Ниже приведен корректный код:

function reason(){ 
    var dropd = document.getElementById("savedrop").value; 
    var drophistory = JSON.parse(localStorage.getItem("reason")) || []; 
    drophistory.push(dropd); 
    localStorage.setItem("reason", JSON.stringify(drophistory)); 
} 
+0

спасибо, именно то, что мне было нужно! – michelle9090

0

Получить данные первого, нажмите новое значение, а затем перезаписать его:

function reason(){ 
     var dropd = document.getElementById("savedrop").value; 
     var drophistory = JSON.parse(localStorage.getItem("savedrop")); 
     drophistory.push(droph); 
     localStorage.setItem("reason", JSON.stringify(drophistory)); 
    } 
Смежные вопросы