0

私のストアでは、localStorage を使用してカートを保管しています。この行を使用して値を取得しました。

var kamat = window.localStorage.getItem("simpleCart_items"); alert(kamat);

これは次のようなものを取得します:

{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}

そして、変数として保存したので、少し後で使用したいと思います。

これを最後の中括弧の前に追加したい(変数kamatの後)

var toimituskulut = {"Toimitus":{"quantity":1,"id":"Toimituskulut","price":8,"name":"Toimituskulut"}};

アイテム間にコロンが必要なので、これを試しました:

var kamatjatoimituskulut = kamat + "," + toimituskulut;

しかし、うまくいきません。もしそうなら、最後の中括弧の後に toimituskulut の内容を挿入します。それで、私は何をする必要がありますか?

編集

ボタンがクリックされたときに編集しようとしています:

$("#posti").live('click', function() {
        $(".maksu").slideDown(600);
        $("#posti").attr("disabled" , "disabled");
        $("#matkahuolto").removeAttr("disabled");
        $("#posti").addClass( "selectedtoimitus" );
        $("#matkahuolto").removeClass( "selectedtoimitus" );
        $(".simpleCart_shipping").html(kamat);  
        var kamatObj = JSON.parse(localStorage["simpleCart_items"]);
        kamatObj['toimituskulut'] = toimituskulut;
        localStorage["simpleCart_items"] = JSON.stringify(kamatObj);


    });

しかし、いいえ、それは何も追加しません。

JSFIDDLE

そのため、ローカル ストレージが次のようになっている場合:

{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}

ボタンをクリックしたときにこのように表示したい

{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"},"Toimitus":{"quantity":1,"id":"Toimitus","price":5,"name":"Toimituskulut"}}

しかし、これを行うvar kamatjatoimituskulut = kamat + "," + toimituskulut; と、これに似たものしか出力されませんよね?

{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}},"Toimitus":{"quantity":1,"id":"Toimitus","price":5,"name":"Toimituskulut"}
4

5 に答える 5

1

次のように、JSON 文字列を含む 2 つの変数がある場合:

var kamat = '{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}';

var toimituskulut = '{"Toimitus":{"quantity":1,"id":"Toimituskulut","price":8,"name":"Toimituskulut"}}';

これらの文字列を次のように json に解析する必要があります (私は jQuery を使用しています)。

var kamatJSON = $.parseJSON(kamat);
var toimitusJSON = $.parseJSON(toimituskulut);

次に、それらを次のように追加します。

$.extend(kamatJSON, toimitusJSON);

オブジェクトであるため、次のような値にアクセスする場合、順序は実際には問題になりません。

kamatJSON.Toimitus

フィドル;

于 2012-09-16T18:08:09.827 に答える
0

コンテンツをオブジェクト (もちろん文字列化) にローカル ストレージに追加しようとしている場合は、その目的のためだけにツールを作成しました。ローカルストレージに任意のタイプの値を設定でき、同様に抽出できます。格納された値の奥深くにネストされた値を格納することもできます。スクリプト/ツールは、https://github.com/andresgallo/truStorageにあります。

于 2012-09-21T04:08:37.497 に答える
0
    Try This :
        $("#posti").live('click', function() {
                $(".maksu").slideDown(600);
                $("#posti").attr("disabled" , "disabled");
                $("#matkahuolto").removeAttr("disabled");
                $("#posti").addClass( "selectedtoimitus" );
                $("#matkahuolto").removeClass( "selectedtoimitus" );
                $(".simpleCart_shipping").html(kamat);  
                var kamatObj = JSON.parse(localStorage["simpleCart_items"]);
var resultObject =JSON.parse((kamatObj).concat(JSON.parse(toimituskulut));
 alert(resultobjcet); 
localStorage["simpleCart_items"] = resultObject; 
            });
于 2012-09-16T18:09:51.190 に答える
0

必要なのは、オブジェクトにプロパティを追加することです。

しかし、localStorage は文字列のみを格納するため、文字列しかありません。JSONとして保存されているようです(これが最も明白な解決策です)。

まず、オブジェクトを復元する必要があります:

var kamatObj = JSON.parse(localStorage["simpleCart_items"]);

次に、プロパティを追加できます。

kamatObj['toimituskulut'] = toimituskulut;

そして、それを再度文字列としてシリアライズして、 localStorage に戻すことができます:

localStorage["simpleCart_items"] = JSON.stringify(kamatObj);
于 2012-09-16T17:44:47.013 に答える