この関数は比較的簡単です。ボタンをクリックすると、オブジェクトが落ちます。もう一度ボタンを押すと、オブジェクトはランダムな位置に戻り、再び同じ速度で落ちます。 ボタンをクリックするたびに、(マージントップ)がはるかに高速になります。なぜ私は理解できないのですか?'jquery'を使用した関数の異常な動作
HTML
<button id="fall" onclick="show_up()"> random-fall </button>
<div id="box" style="width:20px;height:20px;background:blue;"> </div>
スクリプト
var top;
function show_up() {
top = 0;
$("#box").css("margin-top", top);
var rand = Math.random() * 500;
rand = parseInt(rand);
$("#box").css("margin-left", rand);
fall_out();
}
function fall_out() {
top++;
if (top < 500) {
$("#box").css("margin-top", top);
window.setTimeout('fall_out()', 10);
}
else {
top = 0;
fall_out();
}
}
誰も私にそれを解決するための最良の方法を教えてもらえますか?
無限ループ内には「fall_out」はありませんか? topの値にかかわらず、あなたは 'fall_out'を呼び出し続けます。 – Eliasdx
ちょうど注意してください:文字列を 'setTimeout'に渡すべきではありません(' eval'を使います)。関数を渡す必要があります。 'setTimeout(fall_out、10);' –