2010-10-18 6 views
0

Я хотел бы рассчитать среднее (среднее) числа. Каждое значение происходит от радиообъектов, которые являются частью инструкции. Например:Рассчитать среднее значение, когда все поля заполнены

<div class="question_answer"> 
<div id="statementRow_9" class="clearfix t_a_ui_data_list_content"> 
    <div class="question"> 
     <p>3een tweede edit iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 </p> 
    </div> 
    <div class="answer"> 
     <ul> 
      <li><input type="radio" name="statement_9" id="9_0" checked >0</li> 
      <li><input type="radio" name="statement_9" id="9_1">1</li> 
      <li><input type="radio" name="statement_9" id="9_2">2</li> 
      <li><input type="radio" name="statement_9" id="9_3">3</li></ul> 
    </div> 
</div> 
<div><hr /></div> </div> <div class="question_answer"> 
<div id="statementRow_10" class="clearfix t_a_ui_data_list_content"> 
    <div class="question"> 
     <p>3een tweede edit iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 iets 1 </p> 
    </div> 
    <div class="answer"> 
     <ul> 
      <li><input type="radio" name="statement_10" id="10_0" checked >0</li> 
      <li><input type="radio" name="statement_10" id="10_1">1</li> 
      <li><input type="radio" name="statement_10" id="10_2">2</li> 
      <li><input type="radio" name="statement_10" id="10_3">3</li></ul> 
    </div> 
</div> 
<div><hr /></div> 

Имя из радиокнопок является statement_9 где 9 является идентификатором заявления и идентификатор 9_0-9_3 где 9 является идентификатором заявления и 0 - 3 значение радиоблоков.

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

Любые предложения? Благодаря!!

+0

Что вы хотите, это среднее значение всего заявления? например, в statement_9 9_2 проверяется и в statement_10 10_3 проверяется, что вы хотите 2,5? – Diego

+0

Действительно, я бы хотел иметь среднее значение всех утверждений. По каждому утверждению возможен ровно один ответ, вы берете их вместе и вычисляете среднее. – koko

ответ

1

Несколько многословный способ сделать это будет выглядеть так:

function calculateMeans() { 
    var $inputs = $('div.answer input'), 
     map = {}, 
     ret = {}; 

    $inputs.each(function(){ 
     if (!map[this.name]) { 
      map[this.name] = []; 
     } 

     map[this.name].push(this.id.substring(this.id.length-1)); 
    }); 

    $.each(map, function(key, val) { 
     for (var i = 0, j = val.length, sum = 0; i < j; i++) { 
      sum += parseInt(val[i]); 
     } 
     ret[key] = sum/j; 
    }); 

    return ret; 
} 

Это дает объект следующего вида (в данном случае):

{ 
    statement_9: 1.5, 
    statement_10: 1.5 
} 

Там вполне может быть приятнее, способы делать это ...


Редактировать Чтобы получить ю e для всех выбранных входных элементов, используйте следующее:

var mean = (function(){ 
    var sum = 0, 
     $inputs = $('div.answer input:checked'); 

    $inputs.each(function(){ 
     sum += parseFloat(this.id.substring(this.id.length-1)); 
    }); 

    return sum/$inputs.length; 
})(); 
+0

Спасибо большое! Я буду проверять его и давать обратную связь :-) – koko

+0

Я думаю, что я дал плохое описание ... Пользователь должен выбрать 0, 1, 2 или 3. Ответ каждого утверждения в одной категории должен быть взят вместе и рассчитан среднее из ответов. Например: Заявление 9: 2, утверждение 10: 1, поэтому среднее значение равно 1,5. Как это сделать? – koko

+0

Ответ обновлен. – lonesomeday

Смежные вопросы