Javascript 我想将字段Sum中的所有值添加到字段Total中,但它不起作用
这里,sums[i].value得到的是正确的值,但当我想保留所有Sum的总和时,它失败了Javascript 我想将字段Sum中的所有值添加到字段Total中,但它不起作用,javascript,html,Javascript,Html,这里,sums[i].value得到的是正确的值,但当我想保留所有Sum的总和时,它失败了 function calc() { var amounts = document.getElementsByName("Amount"); var prices = document.getElementsByName("Price"); var sums = document.getElementsByName('Sum'); var ta
function calc() {
var amounts = document.getElementsByName("Amount");
var prices = document.getElementsByName("Price");
var sums = document.getElementsByName('Sum');
var tax = document.getElementsByName('Tax');
var total = document.getElementsByName('Total');
for (var i = 0; i < amounts.length; i++) {
sums[i].value = amounts[i].value * prices[i].value;
total[0].value = total[0].value + sums[i].value;
// only this line is not working
}
}
函数计算(){
var金额=document.getElementsByName(“金额”);
var价格=document.getElementsByName(“价格”);
var sums=document.getElementsByName('Sum');
var tax=document.getElementsByName('tax');
var total=document.getElementsByName('total');
对于(变量i=0;i普通HTML是字符串,一直向下,并且var amounts=document.getElementsByName(“Amount”)
后跟金额。value
表示您现在有了字符串值。由于+
也是一个字符串运算符,JavaScript会很高兴地将“2”+“4”
转换为“24”,这看起来像是做了数学运算,但错了,而实际上它根本没有做数学运算
将所有需要为数字的值转换为数字,首先:
var amounts = document.getElementsByName("Amount");
....
var amount = parseFloat(amounts.value); // NOW it's a number
...
将代码替换为:
for (var i = 0; i < amounts.length; i++) {
sums[i].value = parseFloat(amounts[i].value) * parseFloat(prices[i].value);
total[0].value = parseFloat(total[0].value) + parseFloat(sums[i].value);
// only this line is not working
}
for(变量i=0;i
这会对您有所帮助。在进行加法和乘法时删除.value
function test()
{
var amounts = new Array();
amounts[0] = "4";
amounts[1] = "6";
amounts[2] = "10";
var prices = new Array();
prices[0] = "4";
prices[1] = "6";
prices[2] = "10";
var sums = new Array();
var total = 0;
for (var i = 0; i < amounts.length; i++) {
sums[i] = parseInt(amounts[i]) * parseInt(prices[i]);
total= parseInt(total) + parseInt(sums[i]);
// only this line is not working
//alert(total); is 152
}
}
功能测试()
{
var数量=新数组();
金额[0]=“4”;
金额[1]=“6”;
金额[2]=“10”;
var价格=新数组();
价格[0]=“4”;
价格[1]=“6”;
价格[2]=“10”;
var sums=新数组();
var合计=0;
对于(变量i=0;i
为什么不将总数存储在变量中,然后分配给该总数元素!使用parseInt(总计[0].value)+parseInt(总和[i].value)如果字段Sum中的值为4、10和6,则使用总计[0].value。它显示44104106为最佳结果,请详细描述问题。“它正在失败”和“不起作用”并没有为我们提供足够的信息以提供有用的回应。什么是失败,如何失败?你预计会发生什么以及实际发生什么?好的……但是总和[i]。值=金额[i]。值*价格[i]。值;它工作得很好。这意味着它正在读取数字并进行正确的乘法运算。是的,因为*
仅为数字定义,因此如果它看到string*number
,它会在应用*
之前将第一个字符串转换为数字(如果可以)。因此,sums
可以工作,但是totals
将失败,因为string+number
将该数字转换为字符串,这样+
就可以工作,而不是抛出错误(JavaScript不能添加字符串和数字,所以它必须将它们都转换为numbr,或者两者都转换为string)。在您的例子中,它是“唯一可行的方法是将所有内容转换为字符串,然后应用+
操作符”。因此,如果您需要使用数字,请强制使用数字[0]。值所有输入都应该有值才能使用。如果长度的值为3,则应该有三个输入和名称
总计
。您确定吗?总共显示NaN[0]。值请确保在计算之前填写所有输入框。
function test()
{
var amounts = new Array();
amounts[0] = "4";
amounts[1] = "6";
amounts[2] = "10";
var prices = new Array();
prices[0] = "4";
prices[1] = "6";
prices[2] = "10";
var sums = new Array();
var total = 0;
for (var i = 0; i < amounts.length; i++) {
sums[i] = parseInt(amounts[i]) * parseInt(prices[i]);
total= parseInt(total) + parseInt(sums[i]);
// only this line is not working
//alert(total); is 152
}
}