jQueryを使ってのsetTimeout再帰
-
21-09-2019 - |
質問
私はjqueryの
で値をクライアント側で毎秒をインクリメントしようとしています
これが何をしたかである:
<script type="text/javascript">
$(document).ready(function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
setTimeout(increment(),1000)
})
</script>
これは期待通りに動作していないと私は「あまりにも多くの再帰」エラーが発生します。
この上の任意のアイデア?
解決
試してみてください
$(document).ready(function () {
function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
setTimeout(increment,1000);
};
increment();
});
ところで、 setInterval()
にはAで繰り返し関数を呼び出すにあり再帰的setTimeout()
$(document).ready(function () {
var interval = setInterval(increment,1000);
});
function increment(){
$("#counter").text(parseInt($("#counter").text())+1);
}
他のヒント
increment()
は増分ではなく、それを基準に、の呼び出しのです。あなたが再び呼ばれるように増分のためにそれを設定しようとしているとき、あなたは実際にすぐに再びそれを呼んでいます。それは今までに返された場合は、そのの戻り値は深い再帰エラーが出るまで、それは単に何度も何度も自分自身を呼び出すため。
setTimeout
に渡されるが、それは決して
ソリューションは、機能の増分だからね、の参照のことを、かっこを削除するだけで、かつます。
それを呼び出していません setTimeout(increment, 1000)
、関数への参照を渡しているので、右の構文である必要があります。
setTimeout()
を呼び出す再帰的にはお勧めしません。スタックは、最終的に爆破します。 setInterval()
を使用することで、安全でなければなりません。
簡単な方法:
「1000ミリ秒間隔内に作成し、繰り返しのように 『何かが』ではない真である場合はすぐに呼び出される関数」(function(){
if (something) {
doSomething();
} else {
setTimeout(arguments.callee, 1000);
}
})();
所属していません StackOverflow