1

我正在使用 LocalStorage 将图像列表(来自画廊)保存到设备中。我已经解决了大部分问题 - 输入和输出数据,并填充其中的项目的 HTML 列表。简单的。

我现在正在尝试签入以查看正在保存的项目,检查数据库中的所有值,并且仅在不重复时才添加它。当我正在构建这个时,我在一个洞里越来越深,并且正处于我需要一些帮助的地步。

这是我目前的功能:

function storeFavourite(currentImage) {
for (var i=0; i < localStorage.length; i++) {
    item = localStorage.getItem('fav'+i);
    if (item = currentImage) {
        console.log('fav'+i+', '+currentImage+' in db already');
    } else {
        next = localStorage.length;
        localStorage.setItem('fav'+next, currentImage);
        console.log('fav'+next+', '+currentImage);
        updateFavouritesList(); 
    }
}
}

这是一个大混乱,我自己完全糊涂了。谁能帮我弄清楚?

如果需要,我完全不反对重新格式化数据结构。目前键是fav0fav1依此类推。

那里使用的updateFavouritesList()函数只是遍历 localStorage 数据库并<li>从中创建项目以添加到列表中。

4

1 回答 1

1

您在该行中有一个错误:

if (item = currentImage) {

你在分配item. 如果item不是 null/empty/zero/falsy,那么它将始终解析为true. 也许应该是:

if (item == currentImage) {

甚至:

if (item === currentImage) {

取决于 currentImage 的类型。

编辑:无论如何,这里有一个功能可以满足您的需求:

function storeFavourite(item) {
    for (var i in localStorage) {
        if (localStorage[i] === item) return;
    }
    localStorage["fav" + localStorage.length] = item;
}
于 2012-03-16T02:13:51.603 回答