2

最後の質問が下手で申し訳ありません。

このコードでは、ボタン (LButton または RButton) がクリックされたときに div を左右に移動できるようにしようとしています。

私がやろうとしたことは、初期変数「クリック」= 0 を持ち、ボタンをクリックすると変数に「1」が追加されることです。if ステートメントでは、ボタンが 1 回クリックされると、クリック = 1 の場合にもう一度クリックして、div を左に 850 ピクセル余分に移動させることができます。

これはこれを行う最も実用的な方法ではなく、意味的に正しいかどうかもわかりません。これを機能させるための提案、またはおそらくこれを実現するためのより良い方法はありますか?

var click=0;
if (click === 2) {
$(function () {
    $('.RButton').click(function (e) {
        $('.slideContain').animate({
            'margin-left': '-2550px'
        });
    });
});
} else if (click === 1) {
$(function () {
    $('.RButton').click(function (e) {
        $('.slideContain').animate({
            'margin-left': '-1700px'
        }); 
    var click = (click + 1);
    });
});
} else if (click === 0) {
$(function () {
    $('.RButton').click(function (e) {
    $('.slideContain').animate({
        'margin-left': '-850px'
    });
    var click = (click+1);
});
}
4

4 に答える 4

1

イベント ハンドラーを if ステートメント内にバインドしないでください。if ステートメントをイベント ハンドラー内に配置します。

$('.RButton').click(function (e) {

    if (someCondition) {
        $('.slideContain').animate({
            'margin-left': '-2550px'
        });
        //update state here
    } else if (someOtherCondition) {
        $('.slideContain').animate({
            'margin-left': '-1700px'
        });
        //update state here
    } else {
        $('.slideContain').animate({
            'margin-left': '-850px'
        });
        //update state here
    }

});

現在の状態を追跡する方法と、ボタンがクリックされたときに何が起こる必要があるかについては、あなたに任せましたが、これで正しい方向に進むはずです。

また、関数内で使用して変数を定義する場合はvar、新しいインスタンスを作成し、グローバル スコープのインスタンスを使用しないことに注意してください。

于 2013-09-25T20:31:20.163 に答える
0

に置き換えるvar click = (click+1);click++;うまくいきません。

新しい変数を作成する理由はなく、単に機能しません。

に変更if (click3 === x)するとif (click % 3 === x)、これによりラップアラウンドが可能になります。時間 #4 はアクション #1 を実行し、時間 #8 は #2 などを実行します。

var click = 0;また、内側の大きなものを除いて、すべてのコードを配置します

$('.RButton').click(function (e) {
}
于 2013-09-25T20:21:39.383 に答える