首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -使用id计算元素的值,如

Javascript -使用id计算元素的值,如
EN

Stack Overflow用户
提问于 2013-01-29 11:33:24
回答 2查看 1.7K关注 0票数 1

我不能让我的javascript计算在cart上工作。

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

代码语言:javascript
复制
<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部分:

代码语言: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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 11:39:53

不要紧,我在发布这个问题10分钟后就找到了答案。我现在觉得自己像个傻子,==;

我需要为array使用新的变量,而不是"i",因为它用于输入元素数组。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-01-29 11:43:31

您正在构建基于“i”循环计数器的价格数组。10.50进入价格,相应的数量1放在qty1中,然后我通过值2和3,不改变数组。然后当i=4时,price4得到19.20,然后qty5得到2,然后下一次通过。

生成的数组如下所示

代码语言:javascript
复制
price[0] = 10.5, price[4] = 19.20
qty[1] = 1, qty[5] = 2

当你通过最后一次循环来尝试数学时,你实际上是在这样做:

代码语言:javascript
复制
// 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.

讲得通?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14575232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档