Javascript-计算id为like的元素的值

Javascript-计算id为like的元素的值,javascript,calculated-field,Javascript,Calculated Field,我无法为购物车进行javascript计算 我的HTML部分得到了很多其他的输入元素,除了那些带有“price-”和“qty-”id的元素。不知何故,我猜另一个输入元素弄乱了数组。样本: <input type="hidden" id="price-1" value="10.50"/> <input type="hidden" id="qty-1" value="1"/> <input type="hidden" id="shipFee-1" value="4.00

我无法为购物车进行javascript计算

我的HTML部分得到了很多其他的输入元素,除了那些带有“price-”和“qty-”id的元素。不知何故,我猜另一个输入元素弄乱了数组。样本:

<input type="hidden" id="price-1" value="10.50"/>
<input type="hidden" id="qty-1" value="1"/>
<input type="hidden" id="shipFee-1" value="4.00"/>
<input type="hidden" id="tax-1" value="0.70"/>

<input type="hidden" id="price-2" value="19.20"/>
<input type="hidden" id="qty-2" value="2"/>
<input type="hidden" id="shipFee-2" value="4.00"/>
<input type="hidden" id="tax-2" value="1.30"/>

我想让它提醒总的(价格*数量)为“48.9”。下面是有问题的javascript部分:

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array();

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[i] = parseFloat(document.getElementById(inputs[i].id).value);
    alert(price[i]); //alert result: 10.5 and 19.2
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[i] = parseInt(document.getElementById(inputs[i].id).value);
    alert(qty[i]); //alert result: 1 and 2
  }
}

alert(price.length); //alert result: 5
alert(qty.length); //alert result: 6

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: NaN
var inputs=document.getElementsByTagName('input'),
总计=0,
price=新数组(),
数量=新数组();
对于(变量i=0;i
没关系,我在发布这个问题10分钟后找到了答案。我现在觉得自己像个白痴
我需要为数组使用新变量,而不是“I”,因为它用于输入元素数组

var inputs=document.getElementsByTagName('input'),
    total = 0, 
    price = new Array(), 
    qty = new Array(),
    j = 0, k = 0;

for (var i = 0 ; i < inputs.length ; i++) {
  if (inputs[i].id.indexOf('price-') == 0) {
    price[j] = parseFloat(document.getElementById(inputs[i].id).value);
    j++;
  }
  if (inputs[i].id.indexOf('qty-') == 0) {
    qty[k] = parseInt(document.getElementById(inputs[i].id).value);
    k++;
  }
}

for (i = 0 ; i < price.length ; i++) {
  total = total + price[i] * qty[i];
}
alert (total); //alert result: 48.9
var inputs=document.getElementsByTagName('input'),
总计=0,
price=新数组(),
数量=新数组(),
j=0,k=0;
对于(变量i=0;i
您正在基于“i”循环计数器构建价格数组。10.50进入价格[0],1的数量随之进入数量[1],然后我通过值2和3,数组没有变化。当i=4时,价格[4]得到19.20,数量[5]得到2,然后下一次通过

生成的数组看起来像

price[0] = 10.5, price[4] = 19.20
qty[1] = 1, qty[5] = 2
当你循环最后一次尝试,然后进行数学运算时,你基本上是这样做的:

// i = 0
total = total + price[0] * qty [0] // price[0] = 10.50, but qty[0] = undefined, so total = Nan

// i = 1
total = total + price[1] * qty [1] // price[1] = undefined, qty[1] 1, so total = Nan

// etc.

有意义吗?

你确定相同索引的两个数组
i
都包含可以相乘的值吗?是的,我的错,我刚才回答了我自己的问题。我花了1个小时在这个脚本上寻找问题,多么愚蠢的错过。谢谢你的提醒@Anthony Forloneyp,谢谢你。我讨厌我犯这样愚蠢的错误,花上几个小时试图解决它们。应该更加小心@工会先生