0

基本的な javascript/jquery アニメーションを実行しようとしています。基本的に、通常のビューでは隠れている div は、ボタンをクリックすると表示されるはずです。

私が抱えている問題は、状態 (if elseステートメント) にあります。

これが私が使用しているコードです。

$(document).ready(function () {
    animationClick('#animateThis', '#someElement', '#startHere');
});

function animationClick(element, secondElement, elementToBeClicked) {
    element = $(element);
    elementToBeClicked = $(elementToBeClicked);
    secondElement = $(secondElement);
    var state = 0;
    var containerWidth = $('#container').width();
    elementToBeClicked.on("click", function () {
        if(state == 0) {
            secondElement.animate({
                top: '27%',
            }, 500);
            element.animate({
                left: '0%',
            }, 500);
            elementToBeClicked.html("Hide");
            state = 1;
        } else {
            alert('hehehe');
        }
    })
};

つまり、基本的に、これが起こることです。関数全体が document.ready に入れられます。ボタン(この関数が結合されている)をクリックすると、ifステートメントが返さtrueれ、コードが実行されます。また、状態を に設定し1ます。

状態が に設定された後1else ifステートメントが実行されて が表示されるはずですが、表示されalert("hehehe")ません。

誰か私に何かアドバイスをもらえますか?私は何を間違っていますか?

4

3 に答える 3

2

最初のステートメントで既に"click"イベントをバインドしています。ステートメントの最後に試してみて、何が起こるかを確認してください。ただし、一般的には、が実行されていることのみを確認するために、アラートをイベントから除外します。"elementToBeClicked"ifunbindifelseclick

于 2013-03-16T20:47:10.073 に答える
1

変数「state」は関数に対してローカルです。そのため、関数の後続の呼び出しでは常に0になります。関数の外部で変数を初期化します。

于 2013-03-16T20:54:56.143 に答える
0

問題は、if ステートメントで変数とゼロを比較するときに、3 つの === を使用する必要があることだと思います。このように: if (state === 0)

于 2013-03-16T20:52:34.673 に答える