7

わかりましたので、AJAX アプリケーションには、一定時間後にツールチップをコーナーに貼り付けて、ユーザーが何をしているのかをユーザーに知らせる機能があります。ユーザーが別の場所をクリックすると、そのツールチップが関連しなくなるため、タイムアウトをクリアする 2 番目の関数もあります。

タイムアウトに複数のツールチップを設定することで問題が発生し始めています。設定は問題ありませんが、ユーザーが移動した場合にそれらをキャンセルする効率的な方法が見つかりません。

現在、私のコードは次のようになっています

var tuttimer = new Array();

function showtooltip(uniqueid, delay){
    tuttimer[uniqueid] = setTimeout(function(){
        //Create tooltip code here
    },delay);
}

function clearTuttimer(){
    if(typeof tuttimer != 'undefined'){
        for (var i = 0; i < tuttimer.length; i++) {
            clearTimeout(tuttimer[i]);
        }
    }
}

したがって、tuttimer配列はページの読み込み時に作成され、ユーザーが何かを行うたびに、showtooltip()関数を表示するツールチップが呼び出され、一意の ID と遅延時間が与えられます。

しかし、ユーザーが別の処理に移るとclearTuttimer()、配列が存在するかどうかをチェックする関数が呼び出され、ループして個々のタイムアウトがクリアされます。

ただし、これは機能しません。うまくいけば、誰かが私を正しい方向に向けることができます。どうもありがとう。

4

2 に答える 2

13

配列を使用する場合は、Array.pushメソッドを使用します。

var tuttimer = [];

function showtooltip(delay){
    tuttimer.push(setTimeout(function(){
        //Create tooltip code here
    },delay));
}

function clearTuttimer(){
    for (var i = 0; i < tuttimer.length; i++) {
        clearTimeout(tuttimer[i]);
    }
}

を使用する場合uniqueidは、配列の代わりにオブジェクトを使用してください。

var tuttimer = {};

function showtooltip(uniqueid, delay){
    tuttimer[uniqueid] = setTimeout(function(){
        //Create tooltip code here
    },delay);
}

function clearTuttimer(){
    for (var k in tuttimer) {
        clearTimeout(tuttimer[k]);
    }
}
于 2012-10-23T14:51:01.180 に答える
0

いつものように、質問を入力するだけで、自分のやり方の誤りに気づきました。

問題は、配列キーワードを事前定義された値に設定してから、ループするときに数字キーを探していることにあります。これを克服するために、私は変更しました

function showtooltip(uniqueid, delay){
    tuttimer[uniqueid] = setTimeout(function(){
        //Create tooltip code here
    },delay);
}

することが

function showtooltip(uniqueid, delay){
    tuttimer.push(setTimeout(function(){
        //Create tooltip code here
    },delay));
}
于 2012-10-23T14:52:05.787 に答える