在使用localStorage中的json.parse时,innerHTML不起作用

时间:2017-09-05 19:38:00

标签: javascript json

我试图找到答案,但是有太多变量在起作用,所以我希望你们中的一些人可以向我解释这里发生了什么。 我有一个带有div的基本HTML页面,其中包含" issuesList"标识。

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body onload="foo();">
       <div id="issuesList"></div>
       <script src="main.js"></script>
    </body>
</html>

这是我的main.js:

function foo(){
    //var issues = JSON.parse(localStorge.getItem('issues'));
    var issuesList = document.getElementById('issuesList');
    document.getElementById('issuesList').setAttribute("style", "color:red;")
    issuesList.setAttribute("style", "color:red;");
    issuesList.innerHTML = 'XYZ';
}

localStorage是空的,因此它没有问题&#39;对象

如果我将注释行注释掉,则issuesList DOM元素将显示以红色显示的XYZ。如果我取消注释它,则issuesList元素保持为空。我不明白为什么会这样。

另外,如果我添加&#39;问题&#39;到localStorage,并再次调用foo()方法,仍然没有显示在&#39; issuesList&#39;元件。

谢谢

1 个答案:

答案 0 :(得分:1)

这里是代码,已修复:

function foo(){
    var issues = JSON.parse(localStorage.getItem('issues') || "[]");
    var issuesList = document.getElementById('issuesList');
    issuesList.style.color = "red";
    issuesList.innerHTML = 'XYZ';
}

如果issues中没有任何内容,则会将localStorage设置为空数组。我还删除了中间的多余线。 (你也有一个错字:localStorge;总是检查你的浏览器控制台)

编辑:它实际上似乎主要归结为错字。如果该项目不在localStorage中,则尝试获取该项目将返回null,并将其解析为JSON也会返回null

附加说明:localStorage可以存储对象;存储时无需stringify,因此在加载时不需要parse