2015-03-06 3 views
1

Я работаю с приложением в Phonegap ... SO в этом приложении Я сохраняю некоторые значения в локальном хранилище и отображает его ... Например, когда пользователь вводит свое имя и дату рождение каждого из них сохраняется в отдельных значениях ключа. Когда пользователь нажимает кнопку, называемую кнопкой вызова, все сохраненные значения должны отображаться. Здесь Iam сохраняет только первое имя и на следующей странице я его извлекаю .. Проблема в том, что когда я его извлекаю, я получаю только последнее сохраненное имя.HTML5 Локальный файл данных хранилища

Предположим, что первый пользователь ввел имя Aaron и сохранил значение. Затем он вошел в Сандру и сохранил ... затем он вошел в Дона, затем спас ... и если вы получаете средства, я получаю только значение Dona .. Если я хочу для отображения всех трех значений, как мне нужно программировать. Я даю код, который я сделал.

<button onclick="save_data()" type="button">Save</button> 
<input type="submit" > 
<button onclick="recall_data()" type="button">Recall</button> 

<script LANGUAGE="JavaScript"> 
function save_data(){ 
     var firstn = document.getElementById("fn"); 

window.localStorage.setItem('First Name', firstn.value); 

     } 
</script> 

<script LANGUAGE="JavaScript"> 
function recall_data(){ 

window.location = "recallpage.html"; 

     } 

и на странице припоминания я сделал как этот

<body onload="onLoad();"> 

function onLoad() { 
    var text = ""; 
var section2 = document.getElementById("listing"); 
    for (i = 0; i < localStorage.length; i++){ 
    var key = localStorage.key(i); 
    var value = localStorage.getItem(key); 


text = localStorage.getItem(key) + "<br>" ; 


    } 
    section2.innerHTML += text; 
} 

ответ

1

Jocheved, что вы делаете это window.localStorage.setItem ('First Name', firstn.value); .. вы устанавливаете ключ FirstName с первым значением ... и только одно значение может быть установлено для этого ключа .. в этом типе случайностей вместо сохранения значений в localstorage сохраняет значения в таблице .. так что вы можете выбрать каждое значение в соответствии с имя из таблицы ...

пример кода для создания таблицы

tx.executeSql('DROP TABLE IF EXISTS DEMO'); 
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id INTEGER PRIMARY KEY AUTOINCREMENT, data, data2, data3, data4, data5, data6)'); 
tx.executeSql('INSERT INTO DEMO (data, data2, data3, data4, data5, data6) VALUES (?,?,?,?,?,?)',[firstn,lastn,dayb,monb,yrb,middlen]); 
+0

Спасибо Рошанпетер ... – Jocheved

1

Просто изменить:

text = localStorage.getItem(key) + "<br>" ; 

к этому:

text += localStorage.getItem(key) + "<br>" ; 

Вы постоянно переписывая text в for-loop и потому, что o f, что это закончит последнее значение в localStorage. Добавление += сделает так, чтобы все ключи в localStorage были объединены вместе.

Другим решением было бы просто перемещение section2.innerHTML += text внутри для петли:

for (i = 0; i < localStorage.length; i++) { 
    ... 
    text = localStorage.getItem(key) + "<br>" ; 
    section2.innerHTML += text; 
} 
+0

, и тогда вы, вероятно, захотите изменить section2.innerHTML + = текст; to section2.innerHTML = текст; – redCodeAlert

+0

section2.innerHTML + = текст; Мне нужно изменить эту строку. – Jocheved

+0

@Jocheved Вам не обязательно. Вы можете либо использовать решение выше, либо переместить 'section2.innerHTML + = text;' внутри цикла for в конце. –

Смежные вопросы