0

お邪魔して申し訳ありません。単純な JavaScript の if... else ステートメントで問題が発生しています。

ボタンがあります。一度クリックする#everythingelseと、左に押し出されます。もう一度クリックすると#everythingelse、元の位置に戻るはずですが、2回目のクリックでは何もしません。

<script type="text/javascript">
var inout = "0";
$("#mobilemenubutton").click(function () {
    if (inout = "0") {
        $("#everythingelse").animate({
            left: '70%'
        }, 500);
        var inout = "1";
    } else {
        $("#everythingelse").animate({
            left: '0%'
        }, 500);
        var inout = "0";
    }
});         
</script>
4

3 に答える 3

3

if ステートメントで double == を使用する必要があるため、コードを変更しました。これは、これがそれと等しいことを意味します。

   <script type="text/javascript">
    var inout="0";
    $("#mobilemenubutton").click(function () {
        if(inout=="0"){
            $("#everythingelse").animate({ left: '70%' }, 500);
            inout="1"; // removed "var"
        }else{
            $("#everythingelse").animate({ left: '0%' }, 500);
            inout="0"; // removed "var"
        }
    });     
    </script>

しかし、私はあなたがこれに行くことをお勧めします. 変数の代わりにjQuery のdata()を使用して状態を追跡できます。

$('#mobilemenubutton').on('click', function(){
    $("#everythingelse").animate({ left : !$(this).data('state') ? '70%' : '0%' }, 500);
    $("#everythingelse").data('state', !$(this).data('state'));
});
于 2013-08-13T14:56:07.647 に答える
1

あなたのifステートメントは、比較=の代わりに使用しています。==あなたが現在持っている方法は、毎回設定inoutされます。"0"

また、を使用してステートメントinout内で変数を 2 回定義しています。ifvar

これを試してください(変更についてはコメントを参照してください):

<script type="text/javascript">
    var inout="0";
    $("#mobilemenubutton").click(function () {
        if(inout=="0"){ //changed '=' to '=='
            $("#everythingelse").animate({ left: '70%' }, 500);
            inout="1"; //removed 'var'
        }else{
            $("#everythingelse").animate({ left: '0%' }, 500);
            inout="0"; //removed 'var'
        }
    });      
</script>
于 2013-08-13T14:56:29.110 に答える
1

あなたの場合は間違っています。コードを実行するたびに0に設定する か、それ以上にするif(inout="0")必要がif(inout=="0")ありますif(inout==="0")

var関数内も削除します

于 2013-08-13T14:59:31.613 に答える