Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript get函数在JSON字符串中的本地存储中无法正常工作_Javascript_Html_Json - Fatal编程技术网

Javascript get函数在JSON字符串中的本地存储中无法正常工作

Javascript get函数在JSON字符串中的本地存储中无法正常工作,javascript,html,json,Javascript,Html,Json,get函数在我的代码中似乎工作不正常。我可以成功地运行它,没有任何错误。我的数据正在进入本地存储。但是,当我试图从本地存储中提取数据时,它仍然发送null的结果 /** *保存数据的JSON字符串。JSON字符串没有问题 *@type{String} */ var busSchd=“{”routeName:“{”Milledge“,”stops:“[{”Stop 1:“Main Library“,”Stop 2:“Clarke Central“,”Stop 3:“Five Points So

get函数在我的代码中似乎工作不正常。我可以成功地运行它,没有任何错误。我的数据正在进入本地存储。但是,当我试图从本地存储中提取数据时,它仍然发送null的结果


/**
*保存数据的JSON字符串。JSON字符串没有问题
*@type{String}
*/
var busSchd=“{”routeName:“{”Milledge“,”stops:“[{”Stop 1:“Main Library“,”Stop 2:“Clarke Central“,”Stop 3:“Five Points South”,“Stop 4:”Five Points North“,”Stop 5:“Waddell”}]},{”routeName:“Orbit”,“stops:“[{”Stop 1:“Main Library”,“Stop 2:“Clarke Central”,“Stop 3:”Five Points South”,“Stop 4:“Five Points North”,“Stop 5:”Waddell”}]},{“routeName”:“东-西”,“站”:[{“站1”:“东校园甲板”,“站2”:“克雷斯韦尔大厅”,“站3”:“赫尔街甲板”,“站4”:“主图书馆”,“站5”:“乔·弗兰克·哈里斯”}]}];
常量加载=()=>{
让data=JSON.parse(busSchd);
控制台日志(“a”);
对于(var i=0;i{
var search=document.getElementById(“search”);
var results=localStorage.getItem(“搜索”);
如果(结果===null){
document.getElementById(“结果”).innerHTML=“该路由名称没有结果。”;
}否则{
var=结果;
var输出=“”;
对于(var键入停止[0]){
var output=output+''+key+':'+停止[0][key]+'
'; } document.getElementById(“结果”).innerHTML=输出; } };





您的
localStorage
分配给
routeStr
变量:

localStorage.setItem(routeStr, JSON.stringify(route.stops));
但是您的检索是从
.search
属性进行的:

var results = localStorage.getItem("search");
因为您从未分配给
localStorage.search
results
始终为空。请尝试从输入中键入的路由名称中检索。您还需要修复从
localStorage
检索停止信息的函数

由于堆栈片段不支持
localStorage
,请查看JSFIDLE上的演示:

var busSchd='{“路线”:[{“路线名称”:“米里奇”,“车站”:[{“车站1”:“主图书馆”,“车站2”:“克拉克中心”,“车站3”:“五点南”,“车站4”:“五点北”,“车站5”:“瓦德尔”}]},{“路线名称”:“轨道”,“车站”:[{“车站1”:“主图书馆”,“车站2”:“克拉克中心”,“车站3”:“五点南”,“车站4”:“五点北”,“车站5”:“Waddell”},{“routeName”:“东西”,“停靠站”:[{“停靠站1”:“东校园甲板”,“停靠站2”:“克雷斯韦尔大厅”,“停靠站3”:“赫尔街甲板”,“停靠站4”:“主图书馆”,“停靠站5”:“乔·弗兰克·哈里斯”}]};
window.load=()=>{
让data=JSON.parse(busSchd);
控制台日志(“a”);
对于(var i=0;i{
var search=document.getElementById(“search”);
var results=JSON.parse(localStorage.getItem(search.value));
如果(结果===null){
document.getElementById(“结果”).innerHTML=“该路由名称没有结果。”;
返回;
}
const output=Object.entries(结果[0]).reduce((a[stopNum,stopName])=>(
a+''+stopNum+':'+stopName+'
' ), ''); document.getElementById(“结果”).innerHTML=输出; };







从快速查看来看,有很多问题。但要开始:

var search = document.getElementById("search");
var results = localStorage.getItem("search");
应该是:

var search = document.getElementById("search").value;
var results = localStorage.getItem(search);
如果结尾没有.value,搜索只返回元素,而不是用户输入。在结果中,放置“search”会导致它查找一个名为“search”的存储项,您希望在其中搜索存储在变量搜索中的输入(不带引号);
另外,脚本标记应该放在结束正文标记之前。

有没有一种方法可以在不更改else语句和创建const输出的情况下纠正这个问题?我更喜欢提前返回,因为它们可以减少缩进,但是如果您想使用
else
,那很好-只需在
后面添加
else{