0

こんにちは、私は 2 つの html テーブルを持っています。すべてのセル値が 3 秒間隔で変更されています。また、セルが変更されると、前のサイクルで設定されたセル値に従って背景色が設定されます。その間、settimeout 関数がセルに設定され、2 秒後に背景の色がリセットされます。

私の問題は、2 秒ごとにセルの色をリセットする必要があることですが、setTimeout 関数は最後のセルに対してのみ機能します。

注:私のアプリケーションでは、すべてのセルが独自のサイクルで変更されているため、セルの色のリセットはその所有者(セル)に対して機能する必要があります。同時にではありません。

JsFiddleで例を作成しました。誰でも私を助けることができますか?

4

1 に答える 1

0

これは、古典的な「クロージャ イン ループ」の問題です。ローカルコンテキストを含めるために別の内部クロージャーを作成しようとしましたが、パラメーターがありませんでした (そして、比較の代わりに == を使用して割り当てました)

編集:次回は、この投稿が外部参照なしで自立できるように、jsfiddle だけでなく、投稿内にコードを含めてください。

            _cellColorTimeouts[obj] = setTimeout((function(_cell, _obj) {
                return function() {
                    debugger;
                    _cell.css({
                        "background-color":"white",
                        "color":"black"
                    });

                    _cellColorTimeouts[_obj] = null;
                    clearTimeout(_cellColorTimeouts[_obj]);
                };
            })(cell,obj), 2000);

EDIT3: このフィドルを参照してください: http://jsfiddle.net/7FXtL/10/

于 2012-09-06T09:07:11.797 に答える