次の jQuery は for ループ内にあります。
$(document).one('keydown',function(e) {
if( e.which === 90 && leftPosition + 50 <= maxHeight) {
var newLeftPosition = (leftPosition + 1) + 'px';
$("#leftPaddle").css({top:newLeftPosition});
}
});
z キーが押された場合、反復ごとに 1 回起動する必要があります。最初に発火しますが、ループの終了後にループを再開しない限り、再度発火することはありません。私はもともと次のものを持っていましたが、それも一度しか発火しませんでした:
$(document).keydown(function(e){
if(e.which === 90 && leftPosition + 50 <= maxHeight) {
var newLeftPosition = (leftPosition + 1) + 'px';
$("#leftPaddle").css({top:newLeftPosition});
}
});
2 番目のスニペットの欠点は、これも 1 回しか起動されないことに加えて、キーが押されなくなるまでループが停止することです。
変数 leftPosition は for ループ内で設定され、各反復を更新する必要があります。次のように宣言および初期化されます。
var leftPosition = $("#leftPaddle").position().top;
#leftPaddle の CSS は次のとおりです。
#leftPaddle {
position:absolute;
left:0;
top:0;
width:8px;
height:48px;
background-color:#BADA55;
border:1px solid #000;
}
フィドル、実際の動作を確認します。
-ボーナスクールポイント。無限ループを作成すると、jsFiddle がロードに失敗し、ブラウザーがフリーズします。それはフィドルの問題ですか?