2012-03-12 38 views
0

我很新的Dojo和我被困在這裏的一個問題道場的foreach功能

我有一個Zend道場形式,其中我需要四個要素的總和值設置爲另一種元素。我已經分配類(得分),這四個要素

".score" : { 
    "found" : function (ele) { 
     var widgetId = ele.getAttribute('widgetid');       
     dojo.connect(dijit.byId(widgetId),'onBlur', function(){ 

       var sum = 0; 
       dojo.query('.score') 
        .forEach(function(ele){ 
         var widgetId = ele.getAttribute('widgetid'); 
         sum += parseInt(dijit.byId(widgetId).get('value')); 
       }); 
      //***cannot get the value of sum here 
      dijit.byId('score_total').set('value', sum); 
     }); 
    } 
} 

至於評論,我無法獲得的foreach之外的值的總和。有沒有什麼辦法可以讓這個值離開循環?我做錯了什麼?

+2

我不認爲.forEach或.query是異步... – jvenema 2012-03-12 15:09:52

+0

對不起,如果我錯了,但我無法得到的價值(我可能有不良的來源)有什麼我做錯了? – 2012-03-12 15:18:32

+1

看來我在代碼中犯了一個錯誤,因爲我對jscript很陌生,無法調試。事實上,foreach並不是異步的,只是計算parseInt(dijit.byId(widgetId).get('value'))'不是一個數字NaN,因此我無法填充表單元素,我只是簡單地添加if條件並且它工作 if(parseInt(dijit.byId(widgetId).get('value'))){ sum = sum + parseInt(dijit.byId(widgetId).get('value')) ; } 對不起但感謝的麻煩 – 2012-03-12 16:02:10

回答

2

看來,我已經在代碼中犯了一個錯誤,因爲我很新的JScript中我無法調試。的foreach確實不是一個異步的,並正在剛纔計算總和的parseInt(dijit.byId(widgetId).get('value'))返航不是一個數字NaN的,因此我無法填充表單元素,我只是如果條件增加了一個和它的工作

if(parseInt(dijit.byId(widgetId).get('value'))){ 
    sum = sum + parseInt(dijit.byId(widgetId).get('value')); 
} 

對不起,麻煩

0
你的情況

,父上下文有變數,所以它會按照您使用它。 只是一個麪點,如果你想訪問父範圍以外的總和變量,你將需要使用dojo.hitch或通過上下文dojo.forEach

http://www.ibm.com/developerworks/web/library/wa-aj-dojo/

看到的「設置部分方法中,」