2012-03-12 4 views
0

Я совсем новичок в додзё, и я застрял с проблемой здесьдодзё функция Еогеасп

У меня есть форма Зенд додзё, где нужно взять сумму из четырех элементов и установить значение другого элемента. Я назначен класс (оценка) для этих четырех элементов

".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); 
     }); 
    } 
} 

Как комментировал я не могу получить сумму этих значений вне Еогеаспа. Есть ли способ получить значение из цикла? Я что-то делаю неправильно?

+2

Я не думаю, что .forEach или .query является асинхронной ... – jvenema

+0

извините, если я ошибаюсь, но я не могу получить значение (у меня, вероятно, был плохой источник). Есть ли что-то, что я делаю неправильно ??? –

+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')) ; } Извините, но спасибо за беспокойство –

ответ

2

Похоже, что я ошибся в коде, и поскольку я совершенно новичок в jscript, я не смог отладить. Еогеасп действительно не является асинхронным и сумма была рассчитывается только что 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/

смотрите раздел «Настройка метод context "

1

Одна вещь, чтобы отметить ... dojo.foreach осуждается ...

http://livedocs.dojotoolkit.org/dojo/forEach

вместо ... array.forEach

http://livedocs.dojotoolkit.org/dojo/_base/array#forEach

, но я думаю, что вы могли бы также вопрос рамочный, а .. попробовать что-то вроде этого ..

var sum = 0; 
var elements = dojo.query('.score'); 

array.forEach(elements, function(ele) { 
    var widgetId = ele.getAttribute('widgetid'); 
    sum += parseInt(dijit.byId(widgetId).get('value')); 
}); 
Смежные вопросы