我在javascript中有以下函数来计算平均值:
function calculaMediaFinal () {
var soma = 0;
for(var i = 1; i>5; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / 5;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos() {
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
但我有一个问题,我提到的最多有5个不是真的,因为用户选择了他想要多少结果。也就是说,如果用户只想要4,则无法填充5.如何在没有数字5的情况下进行平均,但是使用用户想要的结果数量?
答案 0 :(得分:2)
你可以这样做。
input
元素,让用户将每个数字传递给它,用空格分隔button
将触发计算平均值的代码执行实际计算
' '
,使用trim
reduce
const input = document.querySelector('input');
const btn = document.querySelector('button');
const res = document.querySelector('p > span');
function getAverage() {
const values = input.value.split(' ').map(v => v.trim());
const sum = values.reduce((acc, v) => acc + Number(v), 0);
res.textContent = (sum / values.length);
}
// 1 2 3 4 5 6 7 8 9 10
btn.addEventListener('click', getAverage);
<input type='text' />
<button>get average</button>
<p>result: <span></span></p>
将数字一个接一个地输入到输入字段中的空格(尝试传递1 2 3 4 5 6 7 8 9 10
),然后单击按钮执行计算,然后将在span
元素中显示。
答案 1 :(得分:0)
如果我理解你的问题是正确的,你需要这样的东西。创建一个新的数字输入字段,用于存储用户想要的金额。将输入字段的值放在变量中并在代码中使用它?它也可能需要&#39;&lt; =&#39;在要执行的for循环中。例如
HTML在代码中添加下一行:
<input type="number" id="userAmount" />
使用Javascript:
function calculaMediaFinal () {
var soma = 0;
var amount = parseInt(document.getElementById("userAmount").value);
for(var i = 1; i<=amount; i++) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
}
var media = soma / amount;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
function ContarObjetivos(){
let contador = 0;
if(document.getElementById('resultado' + i).value) {
contador++;
}
}
答案 2 :(得分:0)
您的循环未执行:
for
中,第二个参数是将要执行迭代的条件(true = execute)。将>
更改为<=
使其有效。input
不计算。以下是我使用了所有代码的工作代码段:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += parseInt(document.getElementById('resultado' + i).value, 10);
contador++;
}
}
var media = soma / contador;
var inputCuboMedia = document.getElementById('ConcretizaObj');
inputCuboMedia.value = parseInt(media, 10);
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
⋅ ⋅ ⋅
如果您没有需要在parseInt函数中指定“base”,我还建议您使用一元+
运算符:
// Merged both function:
function calculaMediaFinal() {
let soma = 0;
let contador = 0;
for (var i = 1; i <= 5; i++) { // Changed > to <= here
if (document.getElementById('resultado' + i).value) {
soma += +document.getElementById('resultado' + i).value;
contador++;
}
}
var media = soma / contador;
document.getElementById('ConcretizaObj').value = media;
}
<input id="resultado1"><br>
<input id="resultado2"><br>
<input id="resultado3"><br>
<input id="resultado4"><br>
<input id="resultado5"><br>
<button onclick="calculaMediaFinal();">calcula</button>
<br> Media:
<input id="ConcretizaObj">
希望它有所帮助。