gpt4 book ai didi

javascript - 如何以数组形式取回 LocalStorage HTML 5 中存储的数据?

转载 作者:行者123 更新时间:2023-11-28 01:32:56 24 4
gpt4 key购买 nike

此代码用于给我存储的汽车名称

 <html>
<head>
<script type="text/javascript">
var carArray=[];
function addToListCarArray(){
var newCarName=document.getElementById('carName');
carArray.push(newCarName.value);
if(window.localStorage){
localStorage.setItem("carNameKey",JSON.stringify(carArray));
}

}


function readCarNames(){
if(window.localStorage){
var carNames=localStorage.getItem("carNameKey");
carNames = JSON.parse(carNames);
for (i=0;i<carNames.length;i++){
alert(carNames[i]);
}
}
}
</script>
<title>Local Storage Demo</title>
</head>
<body>
<h1>Demo of Local Strorage</h1>
<div>
<input type="text" id="carName" name="carName"> </input>
<button onclick="addToListCarArray()">Add Car</button>
<button onclick="readCarNames()">Display</button>
<p id="displayCarNames"></p>
</div>
</body>
</html>

但是我怎样才能以数组的形式获取存储的汽车名称并显示它。我尝试以两种方式修改 readCarNames() 函数,但都没有奏效。我进行了搜索,但到处都是关于传递对象和存储我能够做到但无法以数组形式检索它然后打印它

这是我尝试解决但没有解决的问题(编辑:不幸的是,由于我错误的编码风格而没有解决)

function readCarNames(){
if(window.localStorage){
var carNames=localStorage.getItem("carNameKey");

var resultCarNames[]=JSON.parse(carNames);
resultCarNames.toString();
document.getElementById("displayCarNames").innerHTML = resultCarNames;

}

第二个我试过但没成功。

function readCarNames(){
if(window.localStorage){
var carNames=localStorage.getItem("carNameKey");
carNames = JSON.parse(carNames);
var resultCarNames[];
for (i=0;i<carNames.length;i++){
resultCarNames.push(carNames[i]);
}
resultCarNames.toString();
document.getElementById("displayCarNames").innerHTML = resultCarNames;
}

编辑:正如我在 Answer 中指出的 veproza 所犯的错误,我能够解决这个问题..

这是工作片段

function readCarNames(){
if(window.localStorage){
var carNames=localStorage.getItem("carNameKey");
var resultCarNames=JSON.parse(carNames);
document.getElementById("displayCarNames").innerHTML = resultCarNames;
}
}

最佳答案

在您的第一个片段中,您似乎让它正常工作。顺带一提

carNames = JSON.parse(carNames);

carNames 变量中有字符串数组。毕竟,您在下面的 for 循环中对其进行迭代。您可以通过添加一行打印它来尝试它,例如

alert(carNames);

如果你想把它打印到一个元素上,你可能需要这样的东西:

document.getElementById('displayCarNames').innerHTML = carNames;

所以你的基本打印数组变量到一个元素看起来像这样:

function readCarNames(){
var storedString = localStorage.getItem("carNameKey");
var parsedArray = JSON.parse(storedString);
alert(parsedArray);
document.getElementById('displayCarNames').innerHTML = parsedArray;
}

现在,为什么它在您的代码中不起作用:在您的第二个和第三个片段中,您需要知道在 JavaScript 中,您不使用 var arr[] 初始化数组变量.您只需说 var arr = []var arr = JSON.parse(string)。所以这个

var resultCarNames[]=JSON.parse(carNames);

实际上应该只是

var resultCarNames=JSON.parse(carNames);

然后它就会起作用。

另请注意,variable.toString() 返回一个新变量,但不会更改原始变量。示例:

var a = [1, 2, 3];
var b = a.toString();
console.log(a); // [1, 2, 3] - an array
console.log(b); // "1,2,3" - a string

所以在您的代码中,行 resultCarNames.toString(); 根本不执行任何操作。尽管如此,当通过 .innerHTML 将变量分配给 DOM 节点时,它会自动转换为 String

第三个片段包含同样的错误,初始化不当。这一次,行 var resultCarNames[]; 应该是 var resultCarNames = [];。除此之外,花括号有点乱,因为您缺少关闭 for 循环的花括号。

关于javascript - 如何以数组形式取回 LocalStorage HTML 5 中存储的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com