首页 > 解决方案 > 在一个函数上获取“未捕获的 TypeError”,而另一个相同的函数可以正常工作

问题描述

我对此函数有疑问,返回错误:“未捕获的 TypeError:storedId.indexOf 不是函数。”我不知道如何摆脱它。最大的问题是,我有这个完全相同的功能(这个用于电影,另一个用于电视节目),电视节目的一个按预期工作,而这个没有。更糟糕的是,我在我的 github 存储库中有相同的代码,我在那里测试托管网站,它在那里完美运行,而且它的代码实际上是相同的。甚至尝试复制粘贴整个脚本文件的整个代码,它仍然返回相同的错误。昨天开始出现错误,当时我继续“整理”我的代码,因为我的项目已经完成了 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 上的整个脚本文件: https ://hastebin.com/licomupere.coffeescript

标签: javascripttypeerror

解决方案


我似乎已经解决了我的问题。似乎我的 localStorage 卡住了,或者它出了问题。所以有人建议我做 Array.from(storedId) 并将其定义为一个变量,所以我这样做了,并且没有卡住或任何本地存储。然后我(无意)为我的系列观察列表做了同样的事情,这次发生同样的错误时,我只是从 F12 -> 应用程序中清除了会话和本地存储。现在一切正常,所以如果有人碰巧遇到类似情况,请尝试此选项。


推荐阅读