0

我设置了两个数组,我希望将每个数组中的每个值相乘。然后我想以变量的形式获取总值。我将在下面发布我的内容。我想我的问题可能是我不确定如何让每次运行的代码加在一起?

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" 中。

4

2 回答 2

7

您的问题是您正在重新定义flatCharge循环内部,因此循环外部不正确。此外,您不是添加值,而是在循环的每次迭代中替换它们。将循环更改为:

var flatCharge = 0;
for (var i = 0; i < 5; i++) {
    flatCharge += flatWidth[i] * 2 * flatQty[i];
};

document.getElementById("flatTest").innerHTML = "" + flatCharge; 

它应该可以工作。

于 2013-05-23T13:44:27.297 回答
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;
    }
}
于 2013-05-23T13:43:16.810 回答