2010-10-18 2 views
0

Je voudrais calculer la moyenne (moyenne) de certains nombres. Chaque valeur provient d'un radiobutton qui fait partie d'une déclaration. Par exemple:Calculer la moyenne lorsque tous les champs sont remplis

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

Le nom des radiobuttons est statement_9 où 9 est l'identifiant de la déclaration et l'identifiant est 9_0-9_3 où 9 est l'identifiant de la déclaration et à 0 - 3 est la valeur des radiobuttons.

Les déclarations sont regroupées par catégories et la moyenne doit être calculée par categroy, donc pas en général.

Des suggestions? Merci!!

+0

Qu'est-ce que vous voulez, c'est la moyenne de toutes les déclarations? Par exemple, dans statement_9 9_2 est vérifié et dans statement_10 10_3 est vérifié, ce que vous voulez est 2,5? – Diego

+0

En effet, j'aimerais avoir la moyenne de toutes les déclarations. Sur chaque énoncé, il y a exactement une réponse possible, vous les prenez ensemble et calculez la moyenne. – koko

Répondre

1

Une façon un peu bavarde de le faire serait comme ceci:

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

Cela donne un objet de la forme suivante (dans ce cas):

{ 
    statement_9: 1.5, 
    statement_10: 1.5 
} 

Il peut y avoir plus agréables façons de le faire ...


Modifier Pour obtenir e e moyenne de tous les éléments d'entrée sélectionnés, utilisez ce qui suit:

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

Merci beaucoup! Je vais tester et donner des commentaires :-) – koko

+0

Je pense que j'ai donné une mauvaise description ... L'utilisateur doit choisir 0, 1, 2 ou 3. La réponse de chaque déclaration dans une catégorie doit être prise ensemble et calculée le moyen des réponses. Par exemple: Déclaration 9: 2, déclaration 10: 1, donc la moyenne est de 1,5. Comment faire ça? – koko

+0

Réponse mise à jour. – lonesomeday

Questions connexes