简体   繁体   English

LocalStorage仅存储最后输入的数据

[英]LocalStorage only storing last entered data

I am using LocalStorage to store username and password on an app I'm building with PhoneGap for iOS. 我正在使用LocalStorage在使用PhoneGap for iOS构建的应用程序中存储用户名和密码。 When I run the app on my iPad, and I enter the username and password, close the app, then open again to enter another username and password. 当我在iPad上运行该应用程序时,我输入了用户名和密码,请关闭该应用程序,然后再次打开以输入另一个用户名和密码。 When I connect my iPad with my Macbook and open Safari Web inspector to inspect my app running on the iPad, when I go to "Storage -> localStorage" within the inspector, only the last entered username and password is displayed, but the first set of username and password I entered is no where to be found. 当我将iPad与Macbook连接起来并打开Safari Web检查器以检查我在iPad上运行的应用程序时,当我在检查器中转到“存储-> localStorage”时,只会显示最后输入的用户名和密码,但显示的是第一组我输入的用户名和密码不存在。 Anyone have any ideas as to why this happens? 有人对为什么会发生有任何想法吗?

js: js:

<script type="text/javascript">
document.addEventListener("deviceready",onDeviceReady,false);

function onDeviceReady() {
document.getElementById("btnSave").addEventListener("click",saveData,false);
document.getElementById("btnGet").addEventListener("click",getData,false);
}

    function saveData(){
        var username = document.getElementById("username").value;
        var password = document.getElementById("password").value;
        window.localStorage.setItem("uname", username);
        window.localStorage.setItem("pass", password);
        alert("Your data is stored");
    }
    function getData(){
        var output="Your username is " + window.localStorage.getItem("uname") + "and your password is " + window.localStorage.getItem("pass");
        document.getElementById("result").innerHTML = output;
    }
</script>

html: 的HTML:

    User Name: <input type ="text" id="username" /><br />
    Password: <input type="text" id="password" /><br />
    <button id="btnSave"> Save Data </button>
    <button id="btnGet"> Get Data </button>
    <div id="result"></div>

I've tried looking everywhere around the web inspector but still couldn't find where my first set of stored data went. 我尝试在Web检查器中到处查找,但仍然找不到我的第一组存储数据去了哪里。 Is there something wrong with the code? 代码有问题吗?

LocalStorage just stores key value pairs. LocalStorage仅存储键值对。 To store more than one value use a workaround: 要存储多个值,请使用一种变通方法:

str=localStorage.getItem("users");
if(str==""){
str="[]";
}
users=JSON.parse(str);
//users contains an array now
users.push("John");
//add a user
localStorage.setItem("users",JSON.stringify(users));
//create json and store it again

Try this 尝试这个

var localObject = [];
localObject = localStorage.getItem("userDetails");
var testObject = {userName : "firstUser", password : "password1"};
var testArray = localObject.push(testObject);
localStorage.setItem("userDetails", JSON.stringify(testArray));
//to fetch the data
localStorage.getItem("userDetails");
console.log (JSON.parse(localStorage.getItem("userDetails")));

//for second time 
var localObject = localStorage.getItem("userDetails");
var testObject = {userName : "secondUser", password : "password2"};
testArray = localObject.push(testObject);
localStorage.setItem("userDetails", JSON.stringify(testArray));
console.log (JSON.parse(localStorage.getItem("userDetails")));

Please try this 请尝试这个

var localObject = [];
var testObject = {userName : "firstUser", password : "password1"};
localObject.push(testObject);
localStorage.setItem("userDetails", JSON.stringify(localObject));
console.log(JSON.parse(localStorage.getItem("userDetails")));

//for second time 
var testObject = {userName : "secondUser", password : "password2"};
localObject.push(testObject);
localStorage.setItem("userDetails", JSON.stringify(localObject));
console.log(JSON.parse(localStorage.getItem("userDetails")));

Every time you try to store the user details, fetch the local storage, push the user details as an object into the array. 每次尝试存储用户详细信息时,都要获取本地存储,然后将用户详细信息作为对象推送到阵列中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM