0

ループ コンテキストが設定されている場合、コンテキスト オブジェクトにアクセスできないようです。var context = [id1, id2, id3];

このコールバック関数は機能します:

function OnChangeSucceeded(result, context, methodName) {
    document.getElementById(context[0]).disabled = result;
    document.getElementById(context[1]).disabled = result;
    document.getElementById(context[2]).disabled = result;
}

このコールバック関数は失敗します:

function OnChangeSucceeded(result, context, methodName) {
        for(var indx = 0; indx < context.length; indx++) {
           document.getElementById(context[indx]).disabled = result;
        }

    }
4

3 に答える 3

0

あなたのタイプミスのせいですか?

for(var index = 0; indx < context.length; indx++) {

する必要があります

for(var indx = 0; indx < context.length; indx++) {
于 2009-01-02T12:48:36.787 に答える
0

コンテキストがどのように確立されているかを確認できるように、呼び出しコードを確認すると便利です。配列ではなく関連付けとして設定したため、コールバックで使用するときに長さプロパティがありません (または 0)。

設定すると、次のようになります。

var context = new Array();
context[0] = 'elem0';
context[1] = 'elem1';
context[2] = 'elem2';

いいえ

var context = { 0: 'elem0', 1: 'elem1', 2: 'elem2' };

それが問題でない場合は、onChangeSucceeded 関数にブレークポイントを設定し、実際のコンテキスト オブジェクトを調べて、それが持つプロパティを確認することにより、FireFox/FireBug でチェックアウトしてみてください。

于 2009-01-02T11:53:32.747 に答える
0

それは、firebug tvanfosson へのポインタです。

関数をやり直したところ、次のように機能するようになりました。

function OnChangeSucceeded(result, context, methodName) {
    for (controlId in context) {
        document.getElementById(context[controlId]).disabled = result;
    }
}

コンテキストが元々次のように作成されていたためかどうかはわかりません。

context = [id1, id2, id3];

私は今置き換えました:

context = new Array(id1, id2, id3);
于 2009-01-02T13:52:27.360 に答える