1

我刚开始使用 jQuery,但遇到了一些麻烦。我需要在跨度标签之间获取一个数字,并在输入字段中输出平均值。只有值不同于 0 的 span 才有效,否则应忽略它们。此外,数字可以随时更改,平均值必须在不重新加载页面的情况下更新。

相关的 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);

});

谢谢你的帮助

4

2 回答 2

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

这是一个演示

你可以把它变成一个函数,并在spans' 值改变时调用它。

于 2013-01-31T22:31:21.740 回答
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;
于 2013-01-31T22:31:17.750 回答