我刚开始使用jQuery而且我遇到了一些麻烦。我需要在span标签之间获取一个数字,并在输入字段中输出平均值。只有值不等于0的跨度才有效,否则应忽略它们。此外,数字可以随时更改,平均值必须更新,而不会重新加载页面。
相关HTML
<div>
<span class="pm_label">5</span>
</div>
<div>
<span class="pm_label">10</span>
</div>
<div>
<span class="pm_label">0</span>
</div>
<input type="text" name="average" class="average" value="">
非工作JS:
jQuery( document ).ready( function($) {
var sum = 0;
var nums = 0;
$('.pm_label').each(function(){
var value = $(this).html()
if(value != 0) {
sum += value;
nums++;
}
});
var avg = sum / nums ;
$('#average').val(Math.floor(avg));
console.log(avg);
});
感谢您的帮助
答案 0 :(得分:2)
为了帮助您入门:
var total = 0,
valid_labels = 0,
average;
$('.pm_label').each(function () {
var val = parseInt(this.innerHTML, 10);
if (val !== 0) {
valid_labels += 1;
total += val;
}
});
average = total / valid_labels;
$('.average').val(average);
这是 DEMO
您可以将其转换为函数,并在span
s值更改时调用它。
答案 1 :(得分:1)
修改您的文本框以获得ID
<input type="text" name="average" class="average" value="">
到
<input type="text" ID ="average" name="average" class="average" value="">
或使用名称属性选择
$('input[name="average"]').val("");
use sum += parseInt(value); instead of sum += value;