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。null / empty / zero / falseでない場合itemは、常にとして解決され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 に答える