我有1个输入。我想做的是输入=“ 5”,然后在“ total”处输入“ 3”,在“ total2”处输入“ 4”。对于输入的每+1,对“ total”和“ total2”执行+1。 低于5的值无关紧要,因为我的div输出不会显示是否低于5。
简而言之:“当我输入5时,我得到4&5的输出,但我需要3&4。输入之后每+1,我就需要+1。”
这是我到目前为止所拥有的:
function updateTotal() {
var total = 0; //
var total2 = 0; //
var list = document.getElementsByClassName("input");
var values = [];
for (var i = 0; i < list.length; ++i) {
values.push(parseFloat(list[i].value));
}
total = values.reduce(function(previousValue, currentValue, index, array) {
return previousValue + currentValue;
});
document.getElementById("total").value = total;
document.getElementById("total2").value = total - 1;
}
<input type="text" class='input' value="0" onchange='updateTotal();'>
<br>
<br>
<br>
<input name="total" type="text" id="total" value="">
<input name="total2" type="text" id="total2" value="">
但是我似乎无法弄清楚如何给它提供3和4的标准值。
答案 0 :(得分:0)
只有一个for-loop
,我不知道那些reduce
和<input class='input'>
与问题如何相关,但是...... pp
我想做的是输入=“ 5”,然后在“ total”处输入“ 3”,在“ total2”处输入“ 4”。
换句话说,您需要两个输入分别为第一个输入的值的-1和-2。
function updateTotal() {
// var total = 0; I don't know
// var total2 = 0; why you wrote those
// I assume you have multiple <input class="input">
const list = document.getElementsByClassName("input");
const values = [];
for (let i = 0; i < list.length; ++i) {
values.push(parseFloat(list[i].value));
}
//and here you accumulate all those values
let total = values.reduce(function(previousValue, currentValue) {
return previousValue + currentValue;
});
// but code relevant to the problem is DOWN HERE
// here you assigned INPUT value to TOTAL (eg input==5)
// document.getElementById("total").value = total; but you need 2 less
document.getElementById("total").value = total - 2;
// here you assigned INPUT-1 value to TOTAL (eg input=4)
// all ok here
document.getElementById("total2").value = total - 1;
}
<input type="text" class='input' value="0" onchange='updateTotal();' placeholder="input">
<br>
<br>
<br>
<input name="total" type="text" id="total" placeholder="total">
<input name="total2" type="text" id="total2" placeholder="total 2">