0

その背後にある基本的な思考プロセスは、リンクをクリックすると、リンクが生成されてバスケットにエントリされ、現在、バスケットに送信されたものをコンソールに記録しています。リンクをクリックすると、additem()関数がトリガーされ、

function additem(desc,price,quantity)
    {

        var x = items.length - 1;
        var found = (x == 0);
        var y = new Item(desc,price,parseInt(quantity));
        console.log(y);
        var z = y;

        while((x != 0) && (found == false))
        {
            z = items[x];

            if(z != null)
            {
                if(z.M_desc == desc)
                {
                    found = true;
                }
                else
                {
                    x--;
                }
            }
            else
            {
                x--;
            }
        }

        if(found == false)
        {
            items[++numitems] = y;
        }
        else
        {
            items[x].M_quantity += quantity;
        }

        updatecart();
    }

コンソールに表示されるのは次のとおりです。

Item { M_desc="Item 2", M_price="10", M_quantity=1}

ただし、クリックすると、次のようになります。

M_desc
    "Item 2"

M_price
    "10"

M_quantity
    undefined

M_quantity を 1 にして、別のコンソール ビューで未定義にするにはどうすればよいですか?

=====編集=====

問題はここで発生すると思います。私の JS コードは次の行で始まります。

var items = new Array(2);

今、これが新しい配列を作成すると仮定します。それを実行しconsole.log(items)た直後に[undefined, undefined].

additem は、次のコードを使用してリンクをクリックすると呼び出されます。

HTML

<a class='product' rel='"+category[i].product[j].price+"' href=''>"+ category[i].product[j].description + "</a>

JS

$('.product').live("click",function(e){
    additem($(this).text(), $(this).attr('rel'), 1);
e.preventDefault();
});

items[x]これは、常に null または未定義のいずれかであるために問題が発生する場合です。理由はわかりません。

4

1 に答える 1

0

あなたの updatecart 関数はほぼ同時に呼び出されています。items[i].M_quantity = $('input[name="qty"]').val()が問題の行です。入力が null で、数量を未定義に置き換えています。

于 2011-12-09T18:13:06.660 に答える