0

onFocussaveOld)とOnChange( )の2つのイベントがありshowPointsます。ユーザーがドロップダウンにフォーカスすると、このjquery.data関数を使用してドロップダウンの古い値を保存します。ユーザーがドロップダウンの値を変更すると、古い値が現在の値よりも大きいかどうかを確認します。もしそうなら、私はそれに応じて合計を調整します。ただし、これは、の関数から古い値を取得した後に古い値をアラートした場合にのみ.data機能しますonChange。警告がなければ何も起こりません。

function showPoints(pointCategory, ddlAmount, name){
    old = jQuery.data(document.body,name);
    
    alert(old);

    var Points = parseInt($('p#points').html());

    if(old > ddlAmount){
       diff =  old - ddlAmount;
       currentPoints = Points + (diff * pointCategory);
    }else{
       currentPoints = Points - (ddlAmount * pointCategory);
    }
    $('p#points').html(currentPoints);
}//showPoints

function saveOld(oldAmount, name){
    $(document.body).data(name,oldAmount);
}

これにアラートがないと、showPoints()正しく機能しません。何が問題になっていますか?

this.delay(1000)編集:アラートがあるべき場所をすでに試したことに注意してください。それでも動作しませんでした。

4

3 に答える 3

3

onfocusをonclickに変更してみてください。また、次のようにshowPointsの最後に現在の値を.dataに保存してください。

$('p#points').html(currentPoints);
$(document.body).data(name,currentPoints);

showPoints関数内でローカル変数を使用します。

于 2012-11-23T11:02:02.107 に答える
1

警告すると、要素からフォーカスが失われます。そのため、このケースのシナリオは変更されましたalert()

だから私はあなたが値を保存すると言うでしょうonBlur(uがコントロールを離れるときに呼び出されます)。

于 2012-11-23T10:49:45.987 に答える
0

delay(1000)は、処理時間を追加するだけで、関数の処理時間を長くしないため、役に立ちません。x3roのソリューションを使用して、関数がどのように呼び出されるかを確認します。

于 2012-11-23T10:53:46.390 に答える