1

ユーザーがボタンをクリックしてドロップボックス購入にアイテムを追加できる Web ページを作成しています。sessionstorage には、アイテムの partnum と数量が格納されます。ドロップボックスには、選択したアイテムの詳細 (数量は 1) が表示されます。同じアイテムが選択されている場合、数量を 2 に更新するにはどうすればよいですか?

        $("#btnBuy0").click(function()
        {
            $("#dropbox").append('<span><img class = "thumb" src="../images/21_metoyou.jpg" />' + teddy[0].desc + ", Price £"
             + teddy[0].price + ", Quantity: " + quantity + "</span><br/>");
            if (Modernizr.sessionstorage) 
            {  // check if the browser supports sessionStorage
                myids.push(teddy[0].partnum + quantity); // add the current username to the myids array
                sessionStorage["ids"]=JSON.stringify(myids); // convert it to a string and put into sessionStorage
            }   
            else 
            {
             // use cookies instead of sessionStorage
            }
            for (var item =0; item<sessionStroage.length; item++)
            {
                var key = sessionStorage.key(teddy[0].partum);
                if (teddy[0].partnum == teddy[item].partnum)
                {
                var q = sesstionStorage.getItem(quantity, quantity++);
                }
4

1 に答える 1

2

ユーザーのバスケットを保存するために別のデータ構造を使用することをお勧めします。配列 (myids) を使用する代わりに、(JavaScript オブジェクトを使用して)連想配列partnumを使用して、数量に対して をマッピングすることができます。次に例を示します。

// Basket is initially empty.
basket = {};

function saveOrder(teddy, quantity) {
    var partnum = teddy[0].partnum;

    // Create a mapping between the partnum and the quantity
    basket[partnum] = quantity;

    // Write the basket to sessionStorage.
    sessionStorage.basket = JSON.stringify(basket);
}

マップを使用すると、SessionStorage からバスケット オブジェクトを読み書きするためのヘルパー メソッドを作成できます。次に例を示します。

function fetchBasketFromSession() {
    return JSON.parse(sessionStorage.basket);
}

function writeBasketToSession(basket) {
    sessionStorage.basket = JSON.stringify(basket)
}

function getPartNumOf(teddy) {
    return teddy[0].partnum;
}

function getQuantityInSessionBasketOf(teddy) {
    // Fetch the basket from sessionStorage
    var sessionBasket = fetchBasketFromSession(),
        partnum = getPartNumOf(teddy);

    // Return the quantity mapped to the partnum in the basket, or 0 if nothing
    // is mapped.
    return sessionBasket[partnum] || 0;
}


// Combining these functions would allow you to update the users basket.
function addToBasket(teddy, quantityToAdd) {
    var sessionBasket = fetchBasketFromSession(),
        currentQuantity = getQuantityInSessionBasketOf(teddy),
        partnum = getPartNumOf(teddy);

    // Update the quantity for this partnum and write it back out.
    sessionBasket[partnum] = currentQuantity + quantityToAdd;
    writeBasketToSession(sessionBasket);
}

それが役立つことを願っています:)

于 2013-03-23T15:24:28.193 に答える