我有this JavaScript,它计算4个给定数字的总和和平均值。
我希望它再做两件事:
我发现了一些与此问题相关的其他问题,但没有使用JavaScript实现。
function doSums(what) {
var df = document.forms[0];
var a = parseFloat(df[0].value);
var b = parseFloat(df[1].value);
var c = parseFloat(df[2].value);
var d = parseFloat(df[3].value);
if ((isNaN(a)) || (isNaN(b)) || (isNaN(c)) || (isNaN(d))) {
alert("four numbers please !");
df.reset();
df[0].focus();
return;
}
if (what == "total") {
df[5].value = a + b + c + d;
} else {
df[7].value = (a + b + c + d) / 4;
}
}
答案 0 :(得分:1)
使用单个输入执行此操作:
计算中位数:
此代码段执行上述操作,此外还包括错误检查。请注意,我将操作数乘以1以将它们转换为数字,而不是使用parseFloat
。此外,我的floor
和ceil
逻辑会自动处理具有奇数或偶数操作数的个案。
document.querySelector('#equation').addEventListener('change',function() {
var ops= this.value
.split(',')
.sort(function(a,b){return a-b}),
len= ops.length,
valid= true,
total = 0,
i,
error= document.querySelector('#error'),
stotal= document.querySelector('#total'),
smean= document.querySelector('#mean'),
smedian= document.querySelector('#median');
if(len < 2) valid= false;
else {
for(i = 0 ; i < len ; i++) {
if(isNaN(ops[i])) valid= false;
else total+= ops[i]*1;
}
}
if(!valid) {
error.style.display= 'block';
stotal.innerHTML= smean.innerHTML= smedian.innerHTML= '';
}
else {
error.style.display= 'none';
stotal.innerHTML= total;
smean.innerHTML= total/len;
smedian.innerHTML=
(ops[Math.floor((len-1)/2)]*1 + ops[Math.ceil((len-1)/2)]*1)/2;
}
});
&#13;
body {
font: 14px verdana;
}
#error {
color: red;
display: none;
}
&#13;
Enter at least two numbers, separated by commas:<br>
<input id="equation" type="text">
<div id="error">Invalid input</div>
<div>Total: <span id="total"></span></div>
<div>Mean: <span id="mean"></span></div>
<div>Median: <span id="median"></span></div>
&#13;
答案 1 :(得分:0)