2009-01-02 58 views
0

我似乎無法使用循環上下文設置訪問上下文對象:var context = [id1, id2, id3];如何訪問上下文對象作爲PageMethods回調數組

這個回調函數的工作原理:

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; 
     } 

    } 

回答

0

那對指針螢火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); 
0

查看調用代碼以便我們可以看到您的上下文是如何建立的將會很方便。我猜測你已經將它設置爲關聯而不是數組,因此當你在回調中使用它時,沒有長度屬性(或者它是0)。

當將它設置它應該看起來像:

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

變種上下文= {0: 'elem0',1: 'elem1',2: 'elem2時'};

如果這不是問題,那麼可以嘗試在FireFox/FireBug中檢查它,方法是在onChangeSucceeded函數中設置一個斷點並檢查實際的上下文對象以查看它具有的屬性。

+0

調用PageMethods的函數將上下文參數設置爲: var context = [id1,id2,id3]; 我已將其更改爲: var context = new Array(id1,id2,id3); 但仍然得到相同的結果,我認爲上下文參數作爲一些其他對象傳遞給回調。 – HadleyHope 2009-01-02 13:40:02

0

是因爲你的錯字嗎?

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

應該是

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

錯字是由於我重寫了函數而不是複製它。問題依然存在。 – HadleyHope 2009-01-02 13:29:42