jQuery - 计算文本字段中span标记和输出的平均值

时间:2013-01-31 22:22:28

标签: jquery average jquery-calculation

我刚开始使用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);

});

感谢您的帮助

2 个答案:

答案 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;