未捕获的TypeError:titles.push不是函数

时间:2016-07-27 01:55:19

标签: javascript html

我试图推

titles.push(title);

但是当我尝试运行它时出现错误:titles.push不是函数。

完整代码:

    var title = prompt("What would you like your title to be?");
        localStorage.setItem(title, editElem.innerHTML); 
    var titles = localStorage.getItem("titles");
        if(titles == null) 
            titles = new Array();
        if(titles.indexOf(title) < 0) 
            titles.push(title); 
        localStorage.setItem("titles", titles); 
    }

1 个答案:

答案 0 :(得分:0)

本地存储只能存储字符串,而不能存储数组:

  

localStorage.setItem(keyName, keyValue);

     

<强>的keyName
  一个DOMString,其中包含您要创建/更新的密钥的名称。

     

<强>的keyValue
  一个DOMString,其中包含您要为您创建/更新的密钥提供的值。

这意味着您需要将数组的序列化字符串表示形式保存到localStorage,同样,在检索时反序列化数组。幸运的是,JavaScript有一些内置的工具,可以使用[JSON.parse][3][JSON.stringify][3]为您执行此操作。

这样的事情:

var title = prompt("What would you like your title to be?");
var titles = JSON.parse(localStorage.getItem('titles') || '[]');
if(titles.indexOf(title) < 0) {
  titles.push(title);
}
localStorage.setItem("titles", JSON.stringify(titles));