1

ユーザーがアイテムを削除すると、slideup jquery 関数が呼び出されて消える素敵な小さなショッピング バスケットがあります。バックグラウンドでは、コード イグナイター コントローラーを呼び出してデータベースから削除しています。

関数 delete_booking(id_booking, amount) {
    if (user_total == null || user_total == '') {
        var user_total = parseFloat(0);
    }
    $.ajax({
        タイプ: "ポスト",
        データ: ''、
        url: "/"+id_booking,
    });
    $("#booking_id_"+id_booking).slideUp();
    var user_total = (parseFloat() - parseFloat() - parseFloat(user_total));

    アラート (user_total);
    alert(parseFloat(user_total));
    $('#booking_total').html(user_total);
}

私が理解できないのは、ユーザーの合計を更新するときです: $('#booking_total') 関数に新しい合計を記憶させる必要があります...「JavaScript varの記憶」などをグーグル検索しましたが、私は必要なものを正確に見つけることができません...私の唯一の他のオプションは、ajaxを使用してdbを再度呼び出して新しい合計を取得することですが、これを行うにはJSの方法が必要ですか?

4

3 に答える 3

3

別のページに移動していない場合は、関数の外部にある変数に値を格納できます(グローバル名前空間のページ上にあるか、関数が存在するモジュール内にあるかに関係なく)。

var total;
function delete_booking(...)
{
   ...
   total = user_total;
}
于 2011-03-10T17:41:40.293 に答える
0

私はこのタイプの問題に対するグローバルなアプローチを「嫌い」なので、ここに値を「記憶」する仕事をする小さなクロージャーがあります(正確に何を保存すべきかはよくわかりませんが... ^^)

var delete_booking = (function() {
    var booking_total = $("#booking_total"),
        total_amount = parseFloat(booking_total.html()) || 1000; // what ever the value should be...

    return function(id, m) {
        $.ajax(/* ... */);
        $("#booking_id_"+id).slideUp();

        total_amount -= m;
        booking_total.html(total_amount);
    }
}());
于 2011-03-10T22:53:42.657 に答える
0

あなたが言ったように

関数に新しい合計を記憶させる必要があります

関数は値を記憶できませんが、変数は記憶できますが、問題を解決するには、以下のいずれかを実行します

1

var finalTotal;
function delete_booking(...)
{
   //your more codes
   $('#booking_total').html(user_total);
   finalTotal = user_total;
}

今変数finalTotalは値を保持します

2

この方法で総読み取りにアクセスする必要があると感じるときはいつでも

var total=parseint($('#booking_total').html(),10) || 0;

ただし、方法 1 の方が方法 2 よりも優れていると思います

于 2011-03-10T18:01:10.670 に答える