我设置了两个数组,我希望将每个数组中的每个值相乘。然后我想以变量的形式得到总值。我将发布下面的内容。我认为我的问题可能是我不确定如何将每次运行的代码加在一起?
var flatQty=[];
flatQty[0]= document.getElementById("flats1").value;
flatQty[1]= document.getElementById("flats2").value;
flatQty[2]= document.getElementById("flats3").value;
flatQty[3]= document.getElementById("flats4").value;
flatQty[4]= document.getElementById("flats5").value;
var flatWidth=[];
flatWidth[0]=document.getElementById("flatwidth1").value;
flatWidth[1]=document.getElementById("flatwidth2").value;
flatWidth[2]=document.getElementById("flatwidth3").value;
flatWidth[3]=document.getElementById("flatwidth4").value;
flatWidth[4]=document.getElementById("flatwidth5").value;
for (var i=0;i<5;i++)
{
var flatCharge=flatWidth[i]*2*flatQty[i];
}
document.getElementById("flatTest").innerHTML=flatCharge;
当我运行代码时,没有任何内容被打印到id =“flatTest”。
答案 0 :(得分:7)
你的问题是你正在循环中重新定义flatCharge
,因此在循环之外它是不正确的。此外,您不是在添加值,而是在循环的每次迭代中替换它们。将循环更改为:
var flatCharge = 0;
for (var i = 0; i < 5; i++) {
flatCharge += flatWidth[i] * 2 * flatQty[i];
};
document.getElementById("flatTest").innerHTML = "" + flatCharge;
它应该有用。
答案 1 :(得分:0)
.value
属性是字符串,而不是数字。所以你应该小心处理它们。乘法实际上适用于字符串,但不适用于+
运算符执行串联的添加。
有许多从字符串转换为数字的方法:
+s
- 会将表达式s
转换为数字parseFloat(s)
parseInt(s, 10)
表示整数代码中的实际问题是,您使用=
运算符而不是+=
覆盖每次传递中的计算值。
我建议重构整个代码,以避免所有重复:
var flatCharge = 0;
for (var i = 1; i <= 5; ++i) {
var qty = +document.getElementById('flats' + i).value;
var width = +document.getElementById('flatwidth' + i).value;
if (!isNaN(qty) && !isNaN(width)) {
flatCharge += 2 * qty * width;
}
}