计算文本框中的平均数

时间:2015-06-11 16:06:03

标签: javascript

我有一个包含多个文本框的表单。用户将使用想要的文本框数量。当然有一个限制。如何使用JavaScript来确定有多少文本框包含数据?

示例:如果用户在三个文本框中输入了数字,我希望得到3作为结果。此外,使用此数字,我想要文本框的平均值(非空)。因此,如果三个文本框具有值,并且它们分别为56,78和78,我希望(56 + 78 + 78)/ 3。

Function send() {
val1 = parseFloat(document.form1.valeur_2.value);
if (isNaN(val1) == true ) val1=0;

val2 = parseFloat(document.form1.valeur_3.value);
if (isNaN(val2) == true ) val2=0;

val3 = parseFloat(document.form1.valeur_4.value);
if (isNaN(val3) == true ) val3=0;

val4 = parseFloat(document.form1.valeur_5.value);
if (isNaN(val4) == true ) val4=0;

val5 = parseFloat(document.form1.valeur_6.value);
if (isNaN(val5) == true ) val5=0;
document.form1.total.value = val1 + val2 + val3 + val4 + val5
} 

我想除以用户输入的文本框的数量 得到平均值

3 个答案:

答案 0 :(得分:1)

您需要计算找到的有效值的数量。

您可以简单地使用两个变量:

  • 在字段
  • 中输入有效金额之和
  • 当您在字段中找到有效金额时,另一个增加+1。

最后,您将返回除数和/作为平均值。

在没有字段包含值的情况下,请注意除以0。

答案 1 :(得分:0)

从我看到的情况来看,你需要另一个带有循环的计数器来计算NaN的出现次数 - 否则,输入的0将不会被评估。

一旦你有了这个,你可以轻松地除以那个计数器。所以你能做的就是:

Function send() {
count = 0;
val1 = parseFloat(document.form1.valeur_2.value);
if (isNaN(val1) != true ) {
    count++;
} else {
    val1 = 0;
}
// repeat this for the other numbers as well

val2 = parseFloat(document.form1.valeur_3.value);
if (isNaN(val2) == true ) val2=0;

val3 = parseFloat(document.form1.valeur_4.value);
if (isNaN(val3) == true ) val3=0;

val4 = parseFloat(document.form1.valeur_5.value);
if (isNaN(val4) == true ) val4=0;

val5 = parseFloat(document.form1.valeur_6.value);
if (isNaN(val5) == true ) val5=0;
document.form1.total.value = (val1 + val2 + val3 + val4 + val5) / count;
} 

答案 2 :(得分:0)

有更优雅的方法可以做到这一点,但使用普通的Javascipt并保持它(希望)很容易理解:

var btn = document.getElementById("calc");
btn.addEventListener("click", function() {
    var total = 0;
    var count = 0;
    var values = document.getElementsByClassName("value");
    for (var i = 0; i < values.length; i++) {
        var num = parseFloat(values[i].value);
        if (!isNaN(num)) {
            total += num;
            count++;
        }
    }
    var totalTb = document.getElementById("total");
    totalTb.value = count ? total / count : "NaN";
});
<form id="form1">
    <input class="value" type="text"/>
    <input class="value" type="text"/>
    <input class="value" type="text"/>
    <input class="value" type="text"/>
    <input class="value" type="text"/>
    <br/><input type="text" id="total" readonly/>
    <input type="button" id="calc" value="calculate"/>
</form>

我们将一个类附加到输入中,以便我们可以使用getElementsByClassName选择它们。然后我们遍历该集合并尝试解析每个集合中的值。如果它是有效数字(即isNaN返回false),我们会将其添加到正在运行的总数中,并增加一个计数器,表明我们找到了多少个值。在循环之后,我们只需将总数除以计数(在检查计数大于0之后)。