我想计算一些数字的平均值(平均值)。每个值都来自一个无线电按钮,它是声明的一部分。 例如:
<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>
radiobuttons的名称是statement_9,其中9是语句的id,id是9_0-9_3,其中9是语句的id,0-3是radiobuttons的值。
这些陈述按类别分组,并且必须按类别计算均值,因此通常不会计算。
有什么建议吗?谢谢!
答案 0 :(得分: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
}
这可能有更好的方法......
编辑要获取所有选定输入元素的均值,请使用以下命令:
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;
})();