Javascript 获得;未捕获类型错误“;在一个函数上,而另一个相同的函数可以正常工作

Javascript 获得;未捕获类型错误“;在一个函数上,而另一个相同的函数可以正常工作,javascript,typeerror,Javascript,Typeerror,我对这个函数有一个问题,返回了一个错误:“uncaughttypeerror:storedId.indexOf不是一个函数。”我不知道如何摆脱它。最大的问题是,我有相同的功能(这一个用于电影,另一个用于电视节目),电视节目的功能如预期的那样工作,而这一个没有。更糟糕的是,我在我的github repo上有相同的代码,我在那里测试托管了这个网站,它在那里工作得非常完美,而且它的代码完全相同。甚至尝试复制粘贴整个脚本文件的整个代码,但仍然返回相同的错误。昨天我开始“整理”我的代码,因为我的项目已经完

我对这个函数有一个问题,返回了一个错误:“uncaughttypeerror:storedId.indexOf不是一个函数。”我不知道如何摆脱它。最大的问题是,我有相同的功能(这一个用于电影,另一个用于电视节目),电视节目的功能如预期的那样工作,而这一个没有。更糟糕的是,我在我的github repo上有相同的代码,我在那里测试托管了这个网站,它在那里工作得非常完美,而且它的代码完全相同。甚至尝试复制粘贴整个脚本文件的整个代码,但仍然返回相同的错误。昨天我开始“整理”我的代码,因为我的项目已经完成了99%,我只是想把它润色一下,这样我就可以开始托管它了。我不知道它为什么会这样做,所以任何形式的帮助都会有很大帮助,甚至指导阅读哪些文档。。。提前谢谢

下面是给出错误的函数:

//Add movie to watch list. Bug - > Uncaught TypeError: storedId.indexOf is not a function.
function addToList(id){
    let storedId = JSON.parse(localStorage.getItem("movies")) || [];
    if(storedId.indexOf(id) === -1){
        storedId.push(id);
        localStorage.setItem("movies", JSON.stringify(storedId));
        //Notification that it will be added to Watchlist.
        const added = document.getElementById("added");
        added.innerHTML = "Added to watchlist !"
        added.classList.add("added");
        setTimeout(() => {
            added.classList.remove("added");
        }, 1500);
    } else {
        //Notification that it has already been added to the watchlist.
        const alreadyStored = document.getElementById("alreadyStored");
        alreadyStored.innerHTML = "Already in watchlist !"
        alreadyStored.classList.add("alreadyStored");
        setTimeout(() => {
            alreadyStored.classList.remove("alreadyStored");
        }, 1500);
    }
}
如果需要,下面是hastebin上的整个脚本文件:
我似乎已经解决了我的问题。看来我的本地存储卡卡住了,或者被窃听了。所以有人建议我使用Array.from(storedId)并将其定义为一个变量,我就这样做了,并且取消了对本地存储的锁定或其他操作。然后我(un)故意对我的系列监视列表做了同样的事情,这次当同样的错误发生时,我只是从F12->application中清除了会话和本地存储。现在一切正常,因此如果有人遇到类似情况,请尝试此选项。

这意味着解析JSON的结果是一个值,而不是原型上具有
.indexOf()方法的类型;所以,有些东西不是数组或字符串(比如说,对象)。这真的很奇怪,因为它昨天使用的是完全相同的代码lol。。该死的,这是越来越痛苦:|是的,一个“addToList”用于类似“watchlist”的东西,而另一个函数“favorite”用于最喜爱的电影列表。即使我在该函数中执行“console.log(storedId)”或仅仅是“console.log(id)”——addToList——它记录电影id(几个数字),因此它的工作原理与最喜爱的一个完全相同,但是返回了一个错误…按照我的理解,
JSON.parse
工作并返回一个在其原型链中没有
indexOf
函数的对象。我猜在你的
电影中序列化的不是一个数组,而是一个对象。你能查一下吗?