0

表形式のデータ コントロールを使用してファイルからデータを読み取りました.txtが、やりたいことは、時間間隔でデータを変更することです (最近のデータは次のデータに置き換えられます)。

and delay を使おうと思ったの.moveNext()ですが、delay の実装を間違えたようです。

var rs2 = CHAR.recordset;
var delay;
function set()
{
    if(!rs2.EOF && !rs2.BOF)
    {
        var temp = "Characters/"+rs2(1);
        document.getElementById('txt').innerHTML = rs2(0);
        document.getElementById('pic').src = temp;     
    }
}
function begin()
{
    rs2.moveFirst();
    set();  
    delay = setTimeout(move(2), 1000);
}
function move(idx)
{
    switch(idx)
    {
        case 1: if (!rs2.BOF) rs2.movePrevious();
                else rs2.moveLast();
                break;
        case 2: if (!rs2.EOF) rs2.moveNext();
                else rs2.moveFirst();
                break;
    }
    set();

    if(delay)
        clearTimeout(delay);
    delay = setTimeout(move(2), 1000);
}

delay実行されると (私が思うに)、スクリプトが応答しなくなります。再帰が多すぎるために発生すると思いますが、修正方法がわかりません。

4

1 に答える 1

0

このためだけに別の関数を作成しましたが、より便利だと思います。move()適切な間隔で再帰を実行しながら、それ自体のジョブ (後で呼び出される) に集中するのに役立ちます。

関数は次のとおりです。

function automove()
{               
    if (!rs2.BOF) rs2.movePrevious();
    else rs2.moveLast();
    set();

    if(delay)
        clearTimeout(delay);
    delay = setTimeout(automove, 2000);
}
于 2012-04-18T02:55:46.297 に答える