2012-03-12 62 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/

看到的“设置部分方法中,”