0

問題を観察していると思うことで、誰かが私を助けてくれるのではないかと思います。

どこかの値が変更されるたびに更新したい要素(より具体的にはsvg)があります。

私は変数を持っています: それは最初は0です。私は変更の毎回の値GetThreadTree().treeBoxObject.getFirstVisibleRow()を実行したいと思います。function updateCanvas()GetThreadTree().treeBoxObject.getFirstVisibleRow()

私が持っているのは:

canvas.observe(GetThreadTree().treeBoxObject.getFirstVisibleRow(), "scroll", updateCanvas());

ただしupdateCanvas()、初めて呼び出されたときに1回だけ呼び出され、何らかの理由でその後のコードは実行されません。エラーコンソールを確認しましたが、何もありません。

何か案は?

4

2 に答える 2

2

あなたの論理はすべて間違った場所にあります。値を更新するときは、treeBoxObject.IncrementRow() などの関数によって 1 か所で行う必要があります。

次に、その関数に onTreeBoxRowIncremented などのイベントを発生させることができます。そのイベントはあなたが耳を傾けるものであり、それが変化したときは、チェックを行って好きなように更新できます。

あなたが持っているものを使おうとしているだけの奇妙な関数名を許してください。

于 2009-07-23T16:35:12.360 に答える
0

この問題を解決する 1 つの方法は次のとおりです。

var registeredRow = 0;

function checkRow(){
    var row = GetThreadTree().treeBoxObject.getFirstVisibleRow();
    if (registeredRow != row) {
        registeredRow = row;
        updateCanvas();
    }
    window.setTimeout(checkRow, 1);
}

checkRow が呼び出される前に:

registeredRow = GetThreadTree().treeBoxObject.getFirstVisibleRow();
checkRow();

しかし、それは最もエレガントなソリューションではありませんが、機能します;)

于 2010-02-04T10:48:31.520 に答える